UNPKG

ytmusic-api-proxy

Version:
147 lines (146 loc) 4.22 kB
import { AlbumDetailed, AlbumFull, ArtistDetailed, ArtistFull, HomeSection, PlaylistDetailed, PlaylistFull, ProxyConfig, SearchResult, SongDetailed, SongFull, UpNextsDetails, VideoDetailed, VideoFull, YTMusicOptions } from "./types"; export default class YTMusic { private cookiejar; private config?; private client; private proxyConfig?; /** * Creates an instance of YTMusic * Make sure to call initialize() * @param proxyConfig - Optional proxy configuration */ constructor(proxyConfig?: ProxyConfig | undefined); /** * Initializes the API */ initialize(options?: YTMusicOptions): Promise<this>; /** * Constructs a basic YouTube Music API request with all essential headers * and body parameters needed to make the API work * * @param endpoint Endpoint for the request * @param body Body * @param query Search params * @returns Raw response from YouTube Music API which needs to be parsed */ private constructRequest; /** * Get a list of search suggestiong based on the query * * @param query Query string * @returns Search suggestions */ getSearchSuggestions(query: string): Promise<string[]>; /** * Searches YouTube Music API for results * * @param query Query string */ search(query: string): Promise<SearchResult[]>; /** * Searches YouTube Music API for songs * * @param query Query string */ searchSongs(query: string): Promise<SongDetailed[]>; /** * Searches YouTube Music API for videos * * @param query Query string */ searchVideos(query: string): Promise<VideoDetailed[]>; /** * Searches YouTube Music API for artists * * @param query Query string */ searchArtists(query: string): Promise<ArtistDetailed[]>; /** * Searches YouTube Music API for albums * * @param query Query string */ searchAlbums(query: string): Promise<AlbumDetailed[]>; /** * Searches YouTube Music API for playlists * * @param query Query string */ searchPlaylists(query: string): Promise<PlaylistDetailed[]>; /** * Get all possible information of a Song * * @param videoId Video ID * @returns Song Data */ getSong(videoId: string): Promise<SongFull>; /** * Get all possible information of a Up Nexts Song * * @param videoId Video ID * @returns Up Nexts Data */ getUpNexts(videoId: string): Promise<UpNextsDetails[]>; /** * Get all possible information of a Video * * @param videoId Video ID * @returns Video Data */ getVideo(videoId: string): Promise<VideoFull>; /** * Get lyrics of a specific Song * * @param videoId Video ID * @returns Lyrics */ getLyrics(videoId: string): Promise<string[]>; /** * Get all possible information of an Artist * * @param artistId Artist ID * @returns Artist Data */ getArtist(artistId: string): Promise<ArtistFull>; /** * Get all of Artist's Songs * * @param artistId Artist ID * @returns Artist's Songs */ getArtistSongs(artistId: string): Promise<SongDetailed[]>; /** * Get all of Artist's Albums * * @param artistId Artist ID * @returns Artist's Albums */ getArtistAlbums(artistId: string): Promise<AlbumDetailed[]>; /** * Get all possible information of an Album * * @param albumId Album ID * @returns Album Data */ getAlbum(albumId: string): Promise<AlbumFull>; /** * Get all possible information of a Playlist except the tracks * * @param playlistId Playlist ID * @returns Playlist Data */ getPlaylist(playlistId: string): Promise<PlaylistFull>; /** * Get all videos in a Playlist * * @param playlistId Playlist ID * @returns Playlist's Videos */ getPlaylistVideos(playlistId: string): Promise<VideoDetailed[]>; /** * Get sections for the home page. * * @returns Mixed HomeSection */ getHomeSections(): Promise<HomeSection[]>; }