ym-api
Version:
A Node.js wrapper for the Yandex.Music API (Unofficial) http://music.yandex.ru
60 lines (53 loc) • 1.71 kB
text/typescript
import { YMApi } from "../src";
import config from "./config";
const api = new YMApi();
(async () => {
try {
await api.init(config.user);
const name = "Test Playlist";
const options: { visibility: "public" | "private" } = {
visibility: "public",
};
const playlist = await api.createPlaylist(name, options);
console.log("New playlist has been created:");
console.log(`Name: ${playlist.title}`);
console.log(`Kind: ${playlist.kind}`);
console.log(`Visibility: ${playlist.visibility}`);
const tracks = [
{ id: 20599729, albumId: 2347459 },
{ id: 20069589, albumId: 2265364 },
{ id: 15924630, albumId: 1795812 },
];
const playlistWithTracks = await api.addTracksToPlaylist(
playlist.kind,
tracks,
playlist.revision
);
console.log(
`\nAdded ${playlistWithTracks.trackCount} tracks to the playlist`
);
const getPlaylistsOptions = { "rich-tracks": true };
const playlists = await api.getPlaylists(
[playlistWithTracks.kind],
null,
getPlaylistsOptions
);
const firstPlaylist = playlists.shift();
if (!firstPlaylist) {
throw new Error("Something went wrong, first playlist is empty");
}
firstPlaylist.tracks?.forEach((item) => {
console.log(`${item.track.title} - ${item.track.artists[0].name}`);
});
await api.removeTracksFromPlaylist(
playlist.kind,
tracks,
firstPlaylist.revision
);
console.log("\nAll added tracks removed from the playlist.");
await api.removePlaylist(playlist.kind);
console.log("The playlist has been deleted.");
} catch (e) {
console.log(`api error: ${e.message}`);
}
})();