ym-api
Version:
A Node.js wrapper for the Yandex.Music API (Unofficial) http://music.yandex.ru
144 lines (143 loc) • 5.12 kB
TypeScript
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>;
}