diff options
| author | Thongrapee Panyapatiphan <[email protected]> | 2022-01-26 08:18:01 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-01-25 19:18:01 -0600 |
| commit | 9daf12668023c8902fe7aea4f610c3d51fff4880 (patch) | |
| tree | 679bf277ef3472a382d81b52665f0eea6c365a38 /src | |
| parent | c89bd278d3fe473dce1ba5700e521750722aefab (diff) | |
| download | muse-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.ts | 17 |
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}"`); } } |
