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
JavaScript
;
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