aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThongrapee Panyapatiphan <[email protected]>2022-01-26 08:18:01 +0700
committerGitHub <[email protected]>2022-01-25 19:18:01 -0600
commit9daf12668023c8902fe7aea4f610c3d51fff4880 (patch)
tree679bf277ef3472a382d81b52665f0eea6c365a38 /src
parentc89bd278d3fe473dce1ba5700e521750722aefab (diff)
downloadmuse-9daf12668023c8902fe7aea4f610c3d51fff4880.tar.xz
muse-9daf12668023c8902fe7aea4f610c3d51fff4880.zip
Fix whole playlist fails when one song is unavailable (#489)
Co-authored-by: Max Isom <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/services/get-songs.ts17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/services/get-songs.ts b/src/services/get-songs.ts
index fb1b4ea..e132d7b 100644
--- a/src/services/get-songs.ts
+++ b/src/services/get-songs.ts
@@ -255,14 +255,17 @@ export default class {
tracks = shuffled.slice(0, playlistLimit);
}
- let songs = await Promise.all(tracks.map(async track => this.spotifyToYouTube(track, playlist)));
+ const searchResults = await Promise.allSettled(tracks.map(async track => this.spotifyToYouTube(track)));
let nSongsNotFound = 0;
- // Get rid of null values
- songs = songs.reduce((accum: SongMetadata[], song) => {
- if (song) {
- accum.push(song);
+ // Count songs that couldn't be found
+ const songs: SongMetadata[] = searchResults.reduce((accum: SongMetadata[], result) => {
+ if (result.status === 'fulfilled') {
+ accum.push({
+ ...result.value,
+ ...(playlist ? {playlist} : {}),
+ });
} else {
nSongsNotFound++;
}
@@ -270,10 +273,10 @@ export default class {
return accum;
}, []);
- return [songs as SongMetadata[], nSongsNotFound, originalNSongs];
+ return [songs, nSongsNotFound, originalNSongs];
}
- private async spotifyToYouTube(track: SpotifyApi.TrackObjectSimplified, _: QueuedPlaylist | null): Promise<SongMetadata> {
+ private async spotifyToYouTube(track: SpotifyApi.TrackObjectSimplified): Promise<SongMetadata> {
return this.youtubeVideoSearch(`"${track.name}" "${track.artists[0].name}"`);
}
}