Fixed missing videoId
This commit is contained in:
parent
e3579a90b5
commit
10c15a85af
|
|
@ -2,8 +2,8 @@ import YTMusic from "./YTMusic"
|
|||
|
||||
const ytmusic = new YTMusic()
|
||||
ytmusic.initialize().then(() => {
|
||||
ytmusic.search("Lilac", "ALBUM").then(res => {
|
||||
ytmusic.getAlbum(res[0].albumId).then(res => {
|
||||
ytmusic.search("Lilac", "PLAYLIST").then(res => {
|
||||
ytmusic.getPlaylist(res[0].playlistId).then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -4,10 +4,11 @@ import traverse from "../utils/traverse"
|
|||
export default class SongParser {
|
||||
public static parseSearchResult(item: any): YTMusic.SongDetailed {
|
||||
const flexColumns = traverse(item, "flexColumns")
|
||||
const videoId = traverse(item, "playlistItemData", "videoId")
|
||||
|
||||
return {
|
||||
type: "SONG",
|
||||
videoId: traverse(item, "playlistItemData", "videoId"),
|
||||
videoId: videoId instanceof Array ? null : videoId,
|
||||
name: traverse(flexColumns[0], "runs", "text"),
|
||||
artists: traverse(flexColumns[1], "runs")
|
||||
.filter((run: any) => "navigationEndpoint" in run)
|
||||
|
|
@ -23,10 +24,11 @@ export default class SongParser {
|
|||
|
||||
public static parseArtistSong(item: any): YTMusic.SongDetailed {
|
||||
const flexColumns = traverse(item, "flexColumns")
|
||||
const videoId = traverse(item, "playlistItemData", "videoId")
|
||||
|
||||
return {
|
||||
type: "SONG",
|
||||
videoId: traverse(item, "playlistItemData", "videoId"),
|
||||
videoId: videoId instanceof Array ? null : videoId,
|
||||
name: traverse(flexColumns[0], "runs", "text"),
|
||||
artists: [traverse(flexColumns[1], "runs")]
|
||||
.flat()
|
||||
|
|
@ -49,10 +51,11 @@ export default class SongParser {
|
|||
artistBasic: YTMusic.ArtistBasic
|
||||
): Omit<YTMusic.SongDetailed, "duration"> {
|
||||
const flexColumns = traverse(item, "flexColumns")
|
||||
const videoId = traverse(item, "playlistItemData", "videoId")
|
||||
|
||||
return {
|
||||
type: "SONG",
|
||||
videoId: traverse(item, "playlistItemData", "videoId"),
|
||||
videoId: videoId instanceof Array ? null : videoId,
|
||||
name: traverse(flexColumns[0], "runs", "text"),
|
||||
artists: [artistBasic],
|
||||
album: {
|
||||
|
|
@ -70,10 +73,11 @@ export default class SongParser {
|
|||
thumbnails: YTMusic.ThumbnailFull[]
|
||||
): YTMusic.SongDetailed {
|
||||
const flexColumns = traverse(item, "flexColumns")
|
||||
const videoId = traverse(item, "playlistItemData", "videoId")
|
||||
|
||||
return {
|
||||
type: "SONG",
|
||||
videoId: traverse(item, "playlistItemData", "videoId"),
|
||||
videoId: videoId instanceof Array ? null : videoId,
|
||||
name: traverse(flexColumns[0], "runs", "text"),
|
||||
artists,
|
||||
album: albumBasic,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ export const ALBUM_BASIC: ObjectValidator<YTMusic.AlbumBasic> = OBJECT({
|
|||
|
||||
export const SONG_DETAILED: ObjectValidator<YTMusic.SongDetailed> = OBJECT({
|
||||
type: STRING("SONG"),
|
||||
videoId: STRING(),
|
||||
videoId: OR(STRING(), NULL()),
|
||||
name: STRING(),
|
||||
artists: LIST(ARTIST_BASIC),
|
||||
album: ALBUM_BASIC,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ declare namespace YTMusic {
|
|||
|
||||
interface SongDetailed {
|
||||
type: "SONG"
|
||||
videoId: string
|
||||
videoId: string | null
|
||||
name: string
|
||||
artists: ArtistBasic[]
|
||||
album: AlbumBasic
|
||||
|
|
|
|||
Loading…
Reference in New Issue