🐛 fix search results
This commit is contained in:
parent
1cd1459c92
commit
eccf197dcb
|
|
@ -220,7 +220,9 @@ export default class YTMusic {
|
||||||
params: null
|
params: null
|
||||||
})
|
})
|
||||||
|
|
||||||
return traverseList(searchData, "musicResponsiveListItemRenderer").map(SearchParser.parse)
|
return traverseList(searchData, "musicResponsiveListItemRenderer")
|
||||||
|
.map(SearchParser.parse)
|
||||||
|
.filter(Boolean) as z.infer<typeof SearchResult>[]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ export default class PlaylistParser {
|
||||||
name: traverseString(flexColumns[0], "runs", "text")(),
|
name: traverseString(flexColumns[0], "runs", "text")(),
|
||||||
artist: {
|
artist: {
|
||||||
artistId: traverseString(flexColumns[1], "browseId")(),
|
artistId: traverseString(flexColumns[1], "browseId")(),
|
||||||
name: traverseString(flexColumns[1], "runs", "text")(0)
|
name: traverseString(flexColumns[1], "runs", "text")(-3)
|
||||||
},
|
},
|
||||||
thumbnails: traverseList(item, "thumbnails")
|
thumbnails: traverseList(item, "thumbnails")
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import SongParser from "./SongParser"
|
||||||
import VideoParser from "./VideoParser"
|
import VideoParser from "./VideoParser"
|
||||||
|
|
||||||
export default class SearchParser {
|
export default class SearchParser {
|
||||||
public static parse(item: any): SearchResult {
|
public static parse(item: any): SearchResult | null {
|
||||||
const flexColumns = traverseList(item, "flexColumns")
|
const flexColumns = traverseList(item, "flexColumns")
|
||||||
const type = traverseList(flexColumns[1], "runs", "text").at(0) as
|
const type = traverseList(flexColumns[1], "runs", "text").at(0) as
|
||||||
| "Song"
|
| "Song"
|
||||||
|
|
@ -17,8 +17,8 @@ export default class SearchParser {
|
||||||
| "Single"
|
| "Single"
|
||||||
| "Album"
|
| "Album"
|
||||||
| "Playlist"
|
| "Playlist"
|
||||||
|
|
||||||
return {
|
const parsers = {
|
||||||
Song: SongParser.parseSearchResult,
|
Song: SongParser.parseSearchResult,
|
||||||
Video: VideoParser.parseSearchResult,
|
Video: VideoParser.parseSearchResult,
|
||||||
Artist: ArtistParser.parseSearchResult,
|
Artist: ArtistParser.parseSearchResult,
|
||||||
|
|
@ -26,6 +26,12 @@ export default class SearchParser {
|
||||||
Single: AlbumParser.parseSearchResult,
|
Single: AlbumParser.parseSearchResult,
|
||||||
Album: AlbumParser.parseSearchResult,
|
Album: AlbumParser.parseSearchResult,
|
||||||
Playlist: PlaylistParser.parseSearchResult
|
Playlist: PlaylistParser.parseSearchResult
|
||||||
}[type](item)
|
}
|
||||||
|
|
||||||
|
if (parsers[type]) {
|
||||||
|
return parsers[type](item)
|
||||||
|
} else {
|
||||||
|
return null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue