spotify-ts-wrapper
Version:
Spotify TypeScript wrapper.
216 lines (215 loc) • 17.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.artistParser = artistParser;
const getSpotifyId_1 = require("../Utils/getSpotifyId");
function artistParser(body) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27;
const { data } = body;
const artist = data === null || data === void 0 ? void 0 : data.artistUnion;
const type = artist === null || artist === void 0 ? void 0 : artist.__typename;
const id = artist === null || artist === void 0 ? void 0 : artist.id;
const profile = artist === null || artist === void 0 ? void 0 : artist.profile;
const biography = (_a = profile === null || profile === void 0 ? void 0 : profile.biography) === null || _a === void 0 ? void 0 : _a.text;
const name = profile === null || profile === void 0 ? void 0 : profile.name;
const externalLinks = (_c = (_b = profile === null || profile === void 0 ? void 0 : profile.externalLinks) === null || _b === void 0 ? void 0 : _b.items) === null || _c === void 0 ? void 0 : _c.map((item) => item);
const pins = (_e = (_d = profile === null || profile === void 0 ? void 0 : profile.pinnedItem) === null || _d === void 0 ? void 0 : _d.itemV2) === null || _e === void 0 ? void 0 : _e.data;
const stats = artist === null || artist === void 0 ? void 0 : artist.stats;
const followers = stats === null || stats === void 0 ? void 0 : stats.followers;
const listeners = stats === null || stats === void 0 ? void 0 : stats.monthlyListeners;
const cities = (_g = (_f = stats === null || stats === void 0 ? void 0 : stats.topCities) === null || _f === void 0 ? void 0 : _f.items) === null || _g === void 0 ? void 0 : _g.map((item) => ({
city: item === null || item === void 0 ? void 0 : item.city,
country: item === null || item === void 0 ? void 0 : item.country,
listeners: item === null || item === void 0 ? void 0 : item.numberOfListeners,
region: item === null || item === void 0 ? void 0 : item.region,
}));
const rank = stats === null || stats === void 0 ? void 0 : stats.worldRank;
const visuals = artist === null || artist === void 0 ? void 0 : artist.visuals;
const image = (_k = (_j = (_h = visuals === null || visuals === void 0 ? void 0 : visuals.avatarImage) === null || _h === void 0 ? void 0 : _h.sources) === null || _j === void 0 ? void 0 : _j.at(-1)) === null || _k === void 0 ? void 0 : _k.url;
const header = (_o = (_m = (_l = visuals === null || visuals === void 0 ? void 0 : visuals.headerImage) === null || _l === void 0 ? void 0 : _l.sources) === null || _m === void 0 ? void 0 : _m.at(-1)) === null || _o === void 0 ? void 0 : _o.url;
const gallery = (_r = (_q = (_p = visuals === null || visuals === void 0 ? void 0 : visuals.gallery) === null || _p === void 0 ? void 0 : _p.items[0]) === null || _q === void 0 ? void 0 : _q.sources) === null || _r === void 0 ? void 0 : _r.map((image) => image.url);
const pinned = {
name: pins === null || pins === void 0 ? void 0 : pins.name,
type: pins === null || pins === void 0 ? void 0 : pins.__typename,
artwork: (pins === null || pins === void 0 ? void 0 : pins.__typename) === "Playlist"
? (_u = (_t = (_s = pins === null || pins === void 0 ? void 0 : pins.images) === null || _s === void 0 ? void 0 : _s.items[0].sources) === null || _t === void 0 ? void 0 : _t.at(-1)) === null || _u === void 0 ? void 0 : _u.url
: (pins === null || pins === void 0 ? void 0 : pins.__typename) === "Album"
? (_x = (_w = (_v = pins === null || pins === void 0 ? void 0 : pins.coverArt) === null || _v === void 0 ? void 0 : _v.sources) === null || _w === void 0 ? void 0 : _w.at(-1)) === null || _x === void 0 ? void 0 : _x.url
: "",
id: (_y = (0, getSpotifyId_1.extractSpotifyID)((pins === null || pins === void 0 ? void 0 : pins.uri) || "")) !== null && _y !== void 0 ? _y : "",
};
const playlist = (_0 = (_z = profile === null || profile === void 0 ? void 0 : profile.playlistsV2) === null || _z === void 0 ? void 0 : _z.items) === null || _0 === void 0 ? void 0 : _0.map((item) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
const data = item === null || item === void 0 ? void 0 : item.data;
const type = data === null || data === void 0 ? void 0 : data.__typename;
const title = data === null || data === void 0 ? void 0 : data.name;
const description = data === null || data === void 0 ? void 0 : data.description;
const images = (_d = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.images) === null || _a === void 0 ? void 0 : _a.items[0]) === null || _b === void 0 ? void 0 : _b.sources) === null || _c === void 0 ? void 0 : _c.at(-1)) === null || _d === void 0 ? void 0 : _d.url;
const id = (0, getSpotifyId_1.extractSpotifyID)(data === null || data === void 0 ? void 0 : data.uri);
const owner = {
name: (_f = (_e = data === null || data === void 0 ? void 0 : data.ownerV2) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.name,
type: (_h = (_g = data === null || data === void 0 ? void 0 : data.ownerV2) === null || _g === void 0 ? void 0 : _g.data) === null || _h === void 0 ? void 0 : _h.__typename,
};
return {
type,
description,
images,
title,
owner,
id,
};
});
const discography = artist === null || artist === void 0 ? void 0 : artist.discography;
const _latest = discography === null || discography === void 0 ? void 0 : discography.latest;
const latest = {
title: _latest === null || _latest === void 0 ? void 0 : _latest.name,
id: _latest === null || _latest === void 0 ? void 0 : _latest.id,
artwork: (_3 = (_2 = (_1 = _latest === null || _latest === void 0 ? void 0 : _latest.coverArt) === null || _1 === void 0 ? void 0 : _1.sources) === null || _2 === void 0 ? void 0 : _2.at(-1)) === null || _3 === void 0 ? void 0 : _3.url,
label: _latest === null || _latest === void 0 ? void 0 : _latest.label,
date: (_4 = _latest === null || _latest === void 0 ? void 0 : _latest.date) === null || _4 === void 0 ? void 0 : _4.year,
copyright: (_6 = (_5 = _latest === null || _latest === void 0 ? void 0 : _latest.copyright) === null || _5 === void 0 ? void 0 : _5.items) === null || _6 === void 0 ? void 0 : _6.map((item) => item),
type: _latest === null || _latest === void 0 ? void 0 : _latest.type,
count: (_7 = _latest === null || _latest === void 0 ? void 0 : _latest.tracks) === null || _7 === void 0 ? void 0 : _7.totalCount,
};
const albums = (_9 = (_8 = discography === null || discography === void 0 ? void 0 : discography.albums) === null || _8 === void 0 ? void 0 : _8.items) === null || _9 === void 0 ? void 0 : _9.map((item) => {
var _a, _b;
const releases = (_b = (_a = item === null || item === void 0 ? void 0 : item.releases) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.map((i) => fetchAlbum(i));
return releases;
});
const popular = (_11 = (_10 = discography === null || discography === void 0 ? void 0 : discography.popularReleasesAlbums) === null || _10 === void 0 ? void 0 : _10.items) === null || _11 === void 0 ? void 0 : _11.map((item) => fetchAlbum(item));
const compilations = (_15 = (_14 = (_13 = (_12 = discography === null || discography === void 0 ? void 0 : discography.compilations) === null || _12 === void 0 ? void 0 : _12.items[0]) === null || _13 === void 0 ? void 0 : _13.releases) === null || _14 === void 0 ? void 0 : _14.items) === null || _15 === void 0 ? void 0 : _15.map((i) => fetchAlbum(i));
const singles = (_17 = (_16 = discography === null || discography === void 0 ? void 0 : discography.singles) === null || _16 === void 0 ? void 0 : _16.items) === null || _17 === void 0 ? void 0 : _17.map((i) => {
var _a, _b;
const releases = (_b = (_a = i === null || i === void 0 ? void 0 : i.releases) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.map((i) => fetchAlbum(i));
return releases;
});
const tracks = (_19 = (_18 = discography === null || discography === void 0 ? void 0 : discography.topTracks) === null || _18 === void 0 ? void 0 : _18.items) === null || _19 === void 0 ? void 0 : _19.map((i) => {
const track = i === null || i === void 0 ? void 0 : i.track;
return fetchTrack(track);
});
const releated = artist === null || artist === void 0 ? void 0 : artist.relatedContent;
const appearsOn = (_21 = (_20 = releated === null || releated === void 0 ? void 0 : releated.appearsOn) === null || _20 === void 0 ? void 0 : _20.items) === null || _21 === void 0 ? void 0 : _21.map((i) => {
var _a, _b, _c, _d, _e, _f, _g;
const _latest = (_a = i === null || i === void 0 ? void 0 : i.releases) === null || _a === void 0 ? void 0 : _a.items[0];
return {
title: _latest === null || _latest === void 0 ? void 0 : _latest.name,
id: _latest === null || _latest === void 0 ? void 0 : _latest.id,
type: _latest === null || _latest === void 0 ? void 0 : _latest.type,
artwork: (_d = (_c = (_b = _latest === null || _latest === void 0 ? void 0 : _latest.coverArt) === null || _b === void 0 ? void 0 : _b.sources) === null || _c === void 0 ? void 0 : _c.at(-1)) === null || _d === void 0 ? void 0 : _d.url,
date: (_e = _latest === null || _latest === void 0 ? void 0 : _latest.date) === null || _e === void 0 ? void 0 : _e.year,
artists: (_g = (_f = _latest === null || _latest === void 0 ? void 0 : _latest.artists) === null || _f === void 0 ? void 0 : _f.items) === null || _g === void 0 ? void 0 : _g.map((a) => {
var _a;
return ({
name: (_a = a.profile) === null || _a === void 0 ? void 0 : _a.name,
id: (0, getSpotifyId_1.extractSpotifyID)(a === null || a === void 0 ? void 0 : a.uri),
});
}),
};
});
const discover = (_23 = (_22 = releated === null || releated === void 0 ? void 0 : releated.discoveredOnV2) === null || _22 === void 0 ? void 0 : _22.items) === null || _23 === void 0 ? void 0 : _23.map((item) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
return ({
title: (_a = item === null || item === void 0 ? void 0 : item.data) === null || _a === void 0 ? void 0 : _a.name,
type: (_b = item === null || item === void 0 ? void 0 : item.data) === null || _b === void 0 ? void 0 : _b.__typename,
description: (_c = item === null || item === void 0 ? void 0 : item.data) === null || _c === void 0 ? void 0 : _c.description,
id: (_d = item === null || item === void 0 ? void 0 : item.data) === null || _d === void 0 ? void 0 : _d.id,
image: (_h = (_g = (_f = (_e = item.data.images) === null || _e === void 0 ? void 0 : _e.items[0]) === null || _f === void 0 ? void 0 : _f.sources) === null || _g === void 0 ? void 0 : _g.at(-1)) === null || _h === void 0 ? void 0 : _h.url,
owner: {
type: (_l = (_k = (_j = item === null || item === void 0 ? void 0 : item.data) === null || _j === void 0 ? void 0 : _j.ownerV2) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.__typename,
name: (_p = (_o = (_m = item === null || item === void 0 ? void 0 : item.data) === null || _m === void 0 ? void 0 : _m.ownerV2) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.name,
},
});
});
const featuring = (_25 = (_24 = releated === null || releated === void 0 ? void 0 : releated.featuringV2) === null || _24 === void 0 ? void 0 : _24.items) === null || _25 === void 0 ? void 0 : _25.map((item) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
return ({
title: (_a = item === null || item === void 0 ? void 0 : item.data) === null || _a === void 0 ? void 0 : _a.name,
type: (_b = item === null || item === void 0 ? void 0 : item.data) === null || _b === void 0 ? void 0 : _b.__typename,
description: (_c = item === null || item === void 0 ? void 0 : item.data) === null || _c === void 0 ? void 0 : _c.description,
id: (_d = item === null || item === void 0 ? void 0 : item.data) === null || _d === void 0 ? void 0 : _d.id,
image: (_h = (_g = (_f = (_e = item.data.images) === null || _e === void 0 ? void 0 : _e.items[0]) === null || _f === void 0 ? void 0 : _f.sources) === null || _g === void 0 ? void 0 : _g.at(-1)) === null || _h === void 0 ? void 0 : _h.url,
owner: {
type: (_l = (_k = (_j = item === null || item === void 0 ? void 0 : item.data) === null || _j === void 0 ? void 0 : _j.ownerV2) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.__typename,
name: (_p = (_o = (_m = item === null || item === void 0 ? void 0 : item.data) === null || _m === void 0 ? void 0 : _m.ownerV2) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.name,
},
});
});
const artists = (_27 = (_26 = releated === null || releated === void 0 ? void 0 : releated.relatedArtists) === null || _26 === void 0 ? void 0 : _26.items) === null || _27 === void 0 ? void 0 : _27.map((artist) => {
var _a, _b, _c, _d, _e;
return ({
id: artist === null || artist === void 0 ? void 0 : artist.id,
name: (_a = artist === null || artist === void 0 ? void 0 : artist.profile) === null || _a === void 0 ? void 0 : _a.name,
image: (_e = (_d = (_c = (_b = artist === null || artist === void 0 ? void 0 : artist.visuals) === null || _b === void 0 ? void 0 : _b.avatarImage) === null || _c === void 0 ? void 0 : _c.sources) === null || _d === void 0 ? void 0 : _d.at(-1)) === null || _e === void 0 ? void 0 : _e.url,
});
});
const verified = profile === null || profile === void 0 ? void 0 : profile.verified;
return {
id,
type,
name,
biography,
externalLinks,
cities,
followers,
listeners,
image,
rank,
header,
gallery,
pinned,
playlist,
latest,
albums,
popular,
compilations,
singles,
tracks,
appearsOn,
discover,
featuring,
verified,
artists,
};
}
function fetchAlbum(_latest) {
var _a, _b, _c, _d, _e, _f, _g;
return {
title: _latest === null || _latest === void 0 ? void 0 : _latest.name,
id: _latest === null || _latest === void 0 ? void 0 : _latest.id,
artwork: (_c = (_b = (_a = _latest === null || _latest === void 0 ? void 0 : _latest.coverArt) === null || _a === void 0 ? void 0 : _a.sources) === null || _b === void 0 ? void 0 : _b.at(-1)) === null || _c === void 0 ? void 0 : _c.url,
label: _latest === null || _latest === void 0 ? void 0 : _latest.label,
date: (_d = _latest === null || _latest === void 0 ? void 0 : _latest.date) === null || _d === void 0 ? void 0 : _d.year,
copyright: (_f = (_e = _latest === null || _latest === void 0 ? void 0 : _latest.copyright) === null || _e === void 0 ? void 0 : _e.items) === null || _f === void 0 ? void 0 : _f.map((item) => item),
type: _latest === null || _latest === void 0 ? void 0 : _latest.type,
count: (_g = _latest === null || _latest === void 0 ? void 0 : _latest.tracks) === null || _g === void 0 ? void 0 : _g.totalCount,
};
}
function fetchTrack(track) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
const title = track === null || track === void 0 ? void 0 : track.name;
const album = {
id: (0, getSpotifyId_1.extractSpotifyID)((_a = track === null || track === void 0 ? void 0 : track.albumOfTrack) === null || _a === void 0 ? void 0 : _a.uri),
artwork: (_e = (_d = (_c = (_b = track === null || track === void 0 ? void 0 : track.albumOfTrack) === null || _b === void 0 ? void 0 : _b.coverArt) === null || _c === void 0 ? void 0 : _c.sources) === null || _d === void 0 ? void 0 : _d.at(-1)) === null || _e === void 0 ? void 0 : _e.url,
};
const artists = (_g = (_f = track === null || track === void 0 ? void 0 : track.artists) === null || _f === void 0 ? void 0 : _f.items) === null || _g === void 0 ? void 0 : _g.map((a) => {
var _a;
return ({
name: (_a = a.profile) === null || _a === void 0 ? void 0 : _a.name,
id: (0, getSpotifyId_1.extractSpotifyID)(a === null || a === void 0 ? void 0 : a.uri),
});
});
const duration = (_h = track === null || track === void 0 ? void 0 : track.duration) === null || _h === void 0 ? void 0 : _h.totalMilliseconds;
const id = track === null || track === void 0 ? void 0 : track.id;
const plays = track === null || track === void 0 ? void 0 : track.playcount;
const disc = track === null || track === void 0 ? void 0 : track.discNumber;
const contentRating = (_j = track === null || track === void 0 ? void 0 : track.contentRating) === null || _j === void 0 ? void 0 : _j.label;
return {
title,
album,
artists,
duration,
id,
plays,
disc,
contentRating,
};
}