UNPKG

cody-music

Version:

mac osx spotify and itunes music player controller, spotify audio features, itunes and spotify genre, and playlist control

42 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlbumService = void 0; const util_1 = require("./util"); const client_1 = require("./client"); const musicClient = client_1.MusicClient.getInstance(); const musicUtil = new util_1.MusicUtil(); class AlbumService { constructor() { // } static getInstance() { if (!AlbumService.instance) { AlbumService.instance = new AlbumService(); } return AlbumService.instance; } async getSpotifyAlbumTracks(albumId) { // i.e. https://api.spotify.com/v1/albums/1xVP4eFcagXNtQMvEXfyeV/tracks?offset=0&limit=50 const id = musicUtil.createSpotifyAlbumIdFromUri(albumId); const tracks = []; // response: { href: <origapi>, items: [ { artists: [], available_markets, disc_number, duration_ms, explicit, external_urls, href, id, name, preview_url, track_number, type, uri } ] } const api = `/v1/albums/${id}/tracks`; const qsOptions = { offset: 0, limit: 50 }; let codyResp = await musicClient.spotifyApiGet(api, qsOptions); // check if the token needs to be refreshed if (codyResp.status === 401) { // refresh the token await musicClient.refreshSpotifyToken(); // try again codyResp = await musicClient.spotifyApiGet(api, qsOptions); } if (musicUtil.isResponseOkWithData(codyResp) && codyResp.data.items) { codyResp.data.items.forEach((track) => { tracks.push(musicUtil.buildTrack(track)); }); } return tracks; } } exports.AlbumService = AlbumService; //# sourceMappingURL=album.service.js.map