Skip to content
Snippets Groups Projects
Commit 13c5c2f3 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Fix generate tambouille mix (fallback if error in recommendations)

parent c5f44807
No related branches found
No related tags found
1 merge request!47Resolve "Fix create tambouille long playlist"
......@@ -3,6 +3,7 @@
namespace App\Service;
use DateTime;
use SpotifyWebAPI\SpotifyWebAPIException;
class SpotifyPlaylistService
{
......@@ -163,8 +164,9 @@ class SpotifyPlaylistService
$tracksCount = \count($selectedPlaylistTracks);
// Split playlist in two tracks lists
$tracksList1 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
$tracksList2 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
$splittedTracksListLength = max(intval($count / 5), intval($tracksCount / 5));
$tracksList1 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, $splittedTracksListLength);
$tracksList2 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, $splittedTracksListLength);
// Directly pick first part of this playlist
foreach ($tracksList1 as $trackId) {
......@@ -172,14 +174,21 @@ class SpotifyPlaylistService
}
// Get recommandations for other part
$chunks = array_chunk($tracksList2, 5);
$chunks = \array_chunk($tracksList2, 5);
foreach ($chunks as $chunk) {
$recommendations = $api->getRecommendations([
'seed_tracks' => $chunk,
'limit' => \count($chunk)
]);
foreach ($recommendations->tracks as $recommendedTrack) {
$trackIds[$recommendedTrack->id] = $recommendedTrack;
try {
$recommendations = $api->getRecommendations([
'seed_tracks' => $chunk,
'limit' => \count($chunk)
]);
foreach ($recommendations->tracks as $recommendedTrack) {
$trackIds[$recommendedTrack->id] = $recommendedTrack->id;
}
} catch (SpotifyWebAPIException $e) {
// Failed on retrieve recommendations => add seed tracks instead
foreach ($chunk as $fallbackTrackId) {
$trackIds[$fallbackTrackId] = $fallbackTrackId;
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment