🔥 no more omitting "views"
This commit is contained in:
parent
a5e3121a98
commit
5717633c54
|
|
@ -422,7 +422,7 @@ export default class YTMusic {
|
||||||
* @param playlistId Playlist ID
|
* @param playlistId Playlist ID
|
||||||
* @returns Playlist's Videos
|
* @returns Playlist's Videos
|
||||||
*/
|
*/
|
||||||
public async getPlaylistVideos(playlistId: string): Promise<Omit<VideoDetailed, "views">[]> {
|
public async getPlaylistVideos(playlistId: string): Promise<VideoDetailed[]> {
|
||||||
if (playlistId.startsWith("PL")) playlistId = "VL" + playlistId
|
if (playlistId.startsWith("PL")) playlistId = "VL" + playlistId
|
||||||
const playlistData = await this.constructRequest("browse", { browseId: playlistId })
|
const playlistData = await this.constructRequest("browse", { browseId: playlistId })
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import Validator from "validate-any/dist/classes/Validator"
|
||||||
|
|
||||||
import YTMusic from "../"
|
import YTMusic from "../"
|
||||||
import {
|
import {
|
||||||
ALBUM_DETAILED, ALBUM_FULL, ARTIST_DETAILED, ARTIST_FULL, PLAYLIST_FULL, PLAYLIST_VIDEO,
|
ALBUM_DETAILED, ALBUM_FULL, ARTIST_DETAILED, ARTIST_FULL, PLAYLIST_FULL, SONG_DETAILED,
|
||||||
SONG_DETAILED, SONG_FULL, VIDEO_DETAILED, VIDEO_FULL
|
SONG_FULL, VIDEO_DETAILED, VIDEO_FULL
|
||||||
} from "../interfaces"
|
} from "../interfaces"
|
||||||
|
|
||||||
const issues: iValidationError[][] = []
|
const issues: iValidationError[][] = []
|
||||||
|
|
@ -107,7 +107,7 @@ queries.forEach(query => {
|
||||||
it("Get the videos of the first playlist result", async () => {
|
it("Get the videos of the first playlist result", async () => {
|
||||||
const playlists = await ytmusic.searchPlaylists(query)
|
const playlists = await ytmusic.searchPlaylists(query)
|
||||||
const videos = await ytmusic.getPlaylistVideos(playlists[0]!.playlistId)
|
const videos = await ytmusic.getPlaylistVideos(playlists[0]!.playlistId)
|
||||||
expect(videos, LIST(PLAYLIST_VIDEO))
|
expect(videos, LIST(VIDEO_DETAILED))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -122,12 +122,3 @@ export const PLAYLIST_FULL: ObjectValidator<PlaylistFull> = OBJECT({
|
||||||
videoCount: NUMBER(),
|
videoCount: NUMBER(),
|
||||||
thumbnails: LIST(THUMBNAIL_FULL)
|
thumbnails: LIST(THUMBNAIL_FULL)
|
||||||
})
|
})
|
||||||
|
|
||||||
export const PLAYLIST_VIDEO: ObjectValidator<Omit<VideoDetailed, "views">> = OBJECT({
|
|
||||||
type: STRING("VIDEO"),
|
|
||||||
videoId: STRING(),
|
|
||||||
name: STRING(),
|
|
||||||
artists: LIST(ARTIST_BASIC),
|
|
||||||
duration: NUMBER(),
|
|
||||||
thumbnails: LIST(THUMBNAIL_FULL)
|
|
||||||
})
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { VideoDetailed, VideoFull } from "../"
|
import { VideoDetailed, VideoFull } from "../"
|
||||||
import { PLAYLIST_VIDEO } from "../interfaces"
|
import { VIDEO_DETAILED } from "../interfaces"
|
||||||
import checkType from "../utils/checkType"
|
import checkType from "../utils/checkType"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../utils/traverse"
|
||||||
import traverseList from "../utils/traverseList"
|
import traverseList from "../utils/traverseList"
|
||||||
|
|
@ -47,13 +47,13 @@ export default class VideoParser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static parsePlaylistVideo(item: any): Omit<VideoDetailed, "views"> {
|
public static parsePlaylistVideo(item: any): VideoDetailed {
|
||||||
const flexColumns = traverseList(item, "flexColumns")
|
const flexColumns = traverseList(item, "flexColumns")
|
||||||
const videoId =
|
const videoId =
|
||||||
traverseString(item, "playNavigationEndpoint", "videoId")() ||
|
traverseString(item, "playNavigationEndpoint", "videoId")() ||
|
||||||
traverseList(item, "thumbnails")[0].url.match(/https:\/\/i\.ytimg\.com\/vi\/(.+)\//)[1]
|
traverseList(item, "thumbnails")[0].url.match(/https:\/\/i\.ytimg\.com\/vi\/(.+)\//)[1]
|
||||||
|
|
||||||
return checkType<Omit<VideoDetailed, "views">>(
|
return checkType<VideoDetailed>(
|
||||||
{
|
{
|
||||||
type: "VIDEO",
|
type: "VIDEO",
|
||||||
videoId,
|
videoId,
|
||||||
|
|
@ -69,7 +69,7 @@ export default class VideoParser {
|
||||||
),
|
),
|
||||||
thumbnails: traverseList(item, "thumbnails")
|
thumbnails: traverseList(item, "thumbnails")
|
||||||
},
|
},
|
||||||
PLAYLIST_VIDEO
|
VIDEO_DETAILED
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue