ts-npm-ytmusic-api/src/parsers/SearchParser.ts

32 lines
898 B
TypeScript

import AlbumParser from "./AlbumParser"
import ArtistParser from "./ArtistParser"
import PlaylistParser from "./PlaylistParser"
import SongParser from "./SongParser"
import traverse from "../utils/traverse"
import VideoParser from "./VideoParser"
import { SearchResult } from ".."
export default class SearchParser {
public static parse(item: any): SearchResult {
const flexColumns = traverse(item, "flexColumns")
const type = traverse(flexColumns[1], "runs", "text").at(0) as
| "Song"
| "Video"
| "Artist"
| "EP"
| "Single"
| "Album"
| "Playlist"
return {
Song: SongParser.parseSearchResult,
Video: VideoParser.parseSearchResult,
Artist: ArtistParser.parseSearchResult,
EP: AlbumParser.parseSearchResult,
Single: AlbumParser.parseSearchResult,
Album: AlbumParser.parseSearchResult,
Playlist: PlaylistParser.parseSearchResult
}[type](item)
}
}