🔥 no more omitting "views"

This commit is contained in:
Zechariah 2022-05-31 01:39:22 +08:00
parent a5e3121a98
commit 5717633c54
4 changed files with 8 additions and 17 deletions

View File

@ -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 })

View File

@ -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))
}) })
}) })
}) })

View File

@ -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)
})

View File

@ -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
) )
} }
} }