UNPKG

ym-api

Version:

A Node.js wrapper for the Yandex.Music API (Unofficial) http://music.yandex.ru

144 lines (143 loc) 5.12 kB
import { ApiConfig, ApiInitConfig, InitResponse, GetGenresResponse, SearchResponse, Playlist, GetTrackResponse, GetTrackSupplementResponse, GetTrackDownloadInfoResponse, GetFeedResponse, GetAccountStatusResponse, Track, TrackId, HttpClientInterface, SearchOptions, ConcreteSearchOptions, SearchAllResponse, SearchArtistsResponse, SearchTracksResponse, SearchAlbumsResponse, AlbumId, Album, AlbumWithTracks, FilledArtist, Artist, ArtistId, ArtistTracksResponse, LikedTracks } from "./types"; export default class YMApi { private httpClient; private config; private user; constructor(httpClient?: HttpClientInterface, config?: ApiConfig); private getAuthHeader; /** * Authentication */ init(config: ApiInitConfig): Promise<InitResponse>; /** * GET: /account/status * Get account status for curren user */ getAccountStatus(): Promise<GetAccountStatusResponse>; /** * GET: /feed * Get the user's feed */ getFeed(): Promise<GetFeedResponse>; /** * GET: /genres * Get a list of music genres */ getGenres(): Promise<GetGenresResponse>; /** * GET: /search * Search artists, tracks, albums. */ search(query: string, options?: SearchOptions): Promise<SearchResponse>; searchArtists(query: string, options?: ConcreteSearchOptions): Promise<SearchArtistsResponse>; searchTracks(query: string, options?: ConcreteSearchOptions): Promise<SearchTracksResponse>; searchAlbums(query: string, options?: ConcreteSearchOptions): Promise<SearchAlbumsResponse>; searchAll(query: string, options?: ConcreteSearchOptions): Promise<SearchAllResponse>; /** * GET: /users/[user_id]/playlists/list * Get a user's playlists. */ getUserPlaylists(user?: number | string | null): Promise<Array<Playlist>>; /** * GET: /users/[user_id]/playlists/[playlist_kind] * Get a playlist without tracks */ getPlaylist(playlistId: number, user?: number | string | null): Promise<Playlist>; /** * GET: /users/[user_id]/playlists * Get an array of playlists with tracks */ getPlaylists(playlists: Array<number>, user?: number | string | null, options?: { mixed?: boolean; "rich-tracks"?: boolean; }): Promise<Array<Playlist>>; /** * POST: /users/[user_id]/playlists/create * Create a new playlist */ createPlaylist(name: string, options?: { visibility?: "public" | "private"; }): Promise<Playlist>; /** * POST: /users/[user_id]/playlists/[playlist_kind]/delete * Remove a playlist */ removePlaylist(playlistId: number): Promise<"ok" | string>; /** * POST: /users/[user_id]/playlists/[playlist_kind]/name * Change playlist name */ renamePlaylist(playlistId: number, name: string): Promise<Playlist>; /** * POST: /users/[user_id]/playlists/[playlist_kind]/change-relative * Add tracks to the playlist */ addTracksToPlaylist(playlistId: number, tracks: Array<{ id: number; albumId: number; }>, revision: number, options?: { at?: number; }): Promise<Playlist>; /** * POST: /users/[user_id]/playlists/[playlist_kind]/change-relative * Remove tracks from the playlist */ removeTracksFromPlaylist(playlistId: number, tracks: Array<{ id: number; albumId: number; }>, revision: number, options?: { from?: number; to?: number; }): Promise<Playlist>; /** * GET: /tracks/[track_id] * Get an array of playlists with tracks */ getTrack(trackId: TrackId): Promise<GetTrackResponse>; /** * GET: /tracks/[track_id] * Get single track */ getSingleTrack(trackId: TrackId): Promise<Track>; /** * GET: /tracks/[track_id]/supplement * Get an array of playlists with tracks */ getTrackSupplement(trackId: TrackId): Promise<GetTrackSupplementResponse>; /** * GET: /tracks/[track_id]/download-info * Get track download information */ getTrackDownloadInfo(trackId: TrackId): Promise<GetTrackDownloadInfoResponse>; /** * Get track direct link */ getTrackDirectLink(trackDownloadUrl: string): Promise<string>; /** * GET: /albums/[album_id] * Get an album */ getAlbum(albumId: AlbumId, withTracks?: boolean): Promise<Album>; getAlbumWithTracks(albumId: AlbumId): Promise<AlbumWithTracks>; /** * GET: /albums * Get an albums */ getAlbums(albumIds: Array<AlbumId>): Promise<Array<Album>>; /** * GET: /artists/[artist_id] * Get an artist */ getArtist(artistId: ArtistId): Promise<FilledArtist>; /** * GET: /artists * Get an artists */ getArtists(artistIds: Array<ArtistId>): Promise<Array<Artist>>; /** * GET: /artists/[artist_id]/tracks * Get tracks by artist id */ getArtistTracks(artistId: ArtistId, options?: SearchOptions): Promise<ArtistTracksResponse>; getLikedTracks(user?: number | string | null): Promise<LikedTracks>; }