Skip to content
Snippets Groups Projects

Resolve "Fix create tambouille long playlist"

Merged Benoît Harrault requested to merge 53-fix-create-tambouille-long-playlist into master
1 file
+ 18
9
Compare changes
  • Side-by-side
  • Inline
@@ -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;
}
}
}
}
Loading