Skip to content

Commit

Permalink
feat: Introduce artist albums pagination (miraclx#400)
Browse files Browse the repository at this point in the history
  • Loading branch information
miraclx committed Dec 17, 2022
1 parent 3ee744c commit a80393b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
21 changes: 18 additions & 3 deletions cli.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env node
/* eslint-disable consistent-return, camelcase, prefer-promise-reject-errors */
import xurl from 'url';
import util from 'util';
import xpath from 'path';
import crypto from 'crypto';
import {spawn, spawnSync} from 'child_process';
Expand Down Expand Up @@ -250,7 +251,11 @@ async function processPromise(promise, logger, messageHandlers) {
if (messageHandlers.onErr !== false)
handleResultOf(result.reason(), messageHandlers.onErr, reason => [
'(failed%s)',
reason ? `: [${reason['SHOW_DEBUG_STACK' in process.env ? 'stack' : 'message'] || reason}]` : '',
reason
? `: [${
'SHOW_DEBUG_STACK' in process.env ? util.formatWithOptions({colors: true}, reason) : reason['message'] || reason
}]`
: '',
'\n',
]);
return null;
Expand Down Expand Up @@ -1602,7 +1607,13 @@ async function init(packageJson, queries, options) {
`\u2022 [\u2715] ${trackStat.meta && trackStat.meta.trackName ? `${trackStat.meta.trackName}` : '<unknown track>'}${
trackStat.meta && trackStat.meta.track.uri ? ` [${trackStat.meta.track.uri}]` : ''
} (failed:${reason ? ` ${reason}` : ''}${
trackStat.err ? ` [${trackStat.err['SHOW_DEBUG_STACK' in process.env ? 'stack' : 'message'] || trackStat.err}]` : ''
trackStat.err
? ` [${
'SHOW_DEBUG_STACK' in process.env
? util.formatWithOptions({colors: true}, trackStat.err)
: trackStat.err['message'] || trackStat.err
}]`
: ''
})`,
);
} else if (trackStat[symbols.errorCode] === 0)
Expand Down Expand Up @@ -2168,7 +2179,11 @@ async function main(argv) {
} catch (err) {
console.error(
`\x1b[31m[!] Fatal Error\x1b[0m: ${
typeof err === 'undefined' ? '[uncaught]' : err ? err['SHOW_DEBUG_STACK' in process.env ? 'stack' : 'message'] : err
typeof err === 'undefined'
? '[uncaught]'
: 'SHOW_DEBUG_STACK' in err
? util.formatWithOptions({colors: true}, err)
: err['message']
}`,
);
}
Expand Down
11 changes: 4 additions & 7 deletions src/services/apple_music.js
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,9 @@ export default class AppleMusic {
Promise.mapSeries(
(await this.#store.core.artists.get(`?ids=${items.map(item => item.refID).join(',')}`, {storefront})).data,
async artist => {
artist.albums = await this.depaginate(artist.relationships.albums, nextUrl => {
let err = new Error('Unimplemented: artist albums pagination');
[err.artistId, err.artistHref, err.nextUrl] = [artist.id, artist.href, nextUrl];
throw err;
// this.#store.core.artists.get(`${artist.id}/${nextUrl.split(artist.href)[1]}`, {storefront});
});
artist.albums = await this.depaginate(artist.relationships.albums, nextUrl =>
this.#store.core.artists.get(`${artist.id}${nextUrl.split(artist.href)[1]}`, {storefront}),
);
return this.wrapArtistData(artist);
},
),
Expand All @@ -313,7 +310,7 @@ export default class AppleMusic {
(await this.#store.core.playlists.get(`?ids=${items.map(item => item.refID).join(',')}`, {storefront})).data,
async playlist => {
playlist.tracks = await this.depaginate(playlist.relationships.tracks, nextUrl =>
this.#store.core.playlists.get(`${playlist.id}/${nextUrl.split(playlist.href)[1]}`, {storefront}),
this.#store.core.playlists.get(`${playlist.id}${nextUrl.split(playlist.href)[1]}`, {storefront}),
);
return this.wrapPlaylistData(playlist);
},
Expand Down

0 comments on commit a80393b

Please sign in to comment.