Made more function calls type safer
This commit is contained in:
parent
577041359e
commit
b03e38891e
|
|
@ -5,6 +5,8 @@ import PlaylistParser from "./parsers/PlaylistParser"
|
||||||
import SearchParser from "./parsers/SearchParser"
|
import SearchParser from "./parsers/SearchParser"
|
||||||
import SongParser from "./parsers/SongParser"
|
import SongParser from "./parsers/SongParser"
|
||||||
import traverse from "./utils/traverse"
|
import traverse from "./utils/traverse"
|
||||||
|
import traverseList from "./utils/traverseList"
|
||||||
|
import traverseString from "./utils/traverseString"
|
||||||
import VideoParser from "./parsers/VideoParser"
|
import VideoParser from "./parsers/VideoParser"
|
||||||
import {
|
import {
|
||||||
AlbumDetailed,
|
AlbumDetailed,
|
||||||
|
|
@ -203,7 +205,7 @@ export default class YTMusic {
|
||||||
* @returns Search suggestions
|
* @returns Search suggestions
|
||||||
*/
|
*/
|
||||||
public async getSearchSuggestions(query: string): Promise<string[]> {
|
public async getSearchSuggestions(query: string): Promise<string[]> {
|
||||||
return traverse(
|
return traverseList(
|
||||||
await this.constructRequest("music/get_search_suggestions", {
|
await this.constructRequest("music/get_search_suggestions", {
|
||||||
input: query
|
input: query
|
||||||
}),
|
}),
|
||||||
|
|
@ -236,7 +238,7 @@ export default class YTMusic {
|
||||||
}[category!] || null
|
}[category!] || null
|
||||||
})
|
})
|
||||||
|
|
||||||
return [traverse(searchData, "musicResponsiveListItemRenderer")].flat().map(
|
return traverseList(searchData, "musicResponsiveListItemRenderer").map(
|
||||||
{
|
{
|
||||||
SONG: SongParser.parseSearchResult,
|
SONG: SongParser.parseSearchResult,
|
||||||
VIDEO: VideoParser.parseSearchResult,
|
VIDEO: VideoParser.parseSearchResult,
|
||||||
|
|
@ -308,8 +310,8 @@ export default class YTMusic {
|
||||||
)
|
)
|
||||||
|
|
||||||
return [
|
return [
|
||||||
...traverse(songsData, "musicResponsiveListItemRenderer"),
|
...traverseList(songsData, "musicResponsiveListItemRenderer"),
|
||||||
...traverse(moreSongsData, "musicResponsiveListItemRenderer")
|
...traverseList(moreSongsData, "musicResponsiveListItemRenderer")
|
||||||
].map(SongParser.parseArtistSong)
|
].map(SongParser.parseArtistSong)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,15 +323,15 @@ export default class YTMusic {
|
||||||
*/
|
*/
|
||||||
public async getArtistAlbums(artistId: string): Promise<AlbumDetailed[]> {
|
public async getArtistAlbums(artistId: string): Promise<AlbumDetailed[]> {
|
||||||
const artistData = await this.constructRequest("browse", { browseId: artistId })
|
const artistData = await this.constructRequest("browse", { browseId: artistId })
|
||||||
const artistAlbumsData = traverse(artistData, "musicCarouselShelfRenderer")[0]
|
const artistAlbumsData = traverseList(artistData, "musicCarouselShelfRenderer")[0]
|
||||||
const browseBody = traverse(artistAlbumsData, "moreContentButton", "browseEndpoint")
|
const browseBody = traverse(artistAlbumsData, "moreContentButton", "browseEndpoint")
|
||||||
|
|
||||||
const albumsData = await this.constructRequest("browse", browseBody)
|
const albumsData = await this.constructRequest("browse", browseBody)
|
||||||
|
|
||||||
return traverse(albumsData, "musicTwoRowItemRenderer").map((item: any) =>
|
return traverseList(albumsData, "musicTwoRowItemRenderer").map(item =>
|
||||||
AlbumParser.parseArtistAlbum(item, {
|
AlbumParser.parseArtistAlbum(item, {
|
||||||
artistId,
|
artistId,
|
||||||
name: traverse(albumsData, "header", "text").at(0)
|
name: traverseString(albumsData, "header", "text")()
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -369,7 +371,7 @@ export default class YTMusic {
|
||||||
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 })
|
||||||
|
|
||||||
const songs = traverse(
|
const songs = traverseList(
|
||||||
playlistData,
|
playlistData,
|
||||||
"musicPlaylistShelfRenderer",
|
"musicPlaylistShelfRenderer",
|
||||||
"musicResponsiveListItemRenderer"
|
"musicResponsiveListItemRenderer"
|
||||||
|
|
@ -379,7 +381,7 @@ export default class YTMusic {
|
||||||
if (continuation instanceof Array) break
|
if (continuation instanceof Array) break
|
||||||
|
|
||||||
const songsData = await this.constructRequest("browse", {}, { continuation })
|
const songsData = await this.constructRequest("browse", {}, { continuation })
|
||||||
songs.push(...traverse(songsData, "musicResponsiveListItemRenderer"))
|
songs.push(...traverseList(songsData, "musicResponsiveListItemRenderer"))
|
||||||
continuation = traverse(songsData, "continuation")
|
continuation = traverse(songsData, "continuation")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue