ytmusic-api-proxy
Version:
YouTube Music API
147 lines (146 loc) • 4.22 kB
TypeScript
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[]>;
}