Skip to content
Snippets Groups Projects

Resolve "Fix create tambouille long playlist"

1 file
+ 18
9
Compare changes
  • Side-by-side
  • Inline
@@ -3,6 +3,7 @@
@@ -3,6 +3,7 @@
namespace App\Service;
namespace App\Service;
use DateTime;
use DateTime;
 
use SpotifyWebAPI\SpotifyWebAPIException;
class SpotifyPlaylistService
class SpotifyPlaylistService
{
{
@@ -163,8 +164,9 @@ class SpotifyPlaylistService
@@ -163,8 +164,9 @@ class SpotifyPlaylistService
$tracksCount = \count($selectedPlaylistTracks);
$tracksCount = \count($selectedPlaylistTracks);
// Split playlist in two tracks lists
// Split playlist in two tracks lists
$tracksList1 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
$splittedTracksListLength = max(intval($count / 5), intval($tracksCount / 5));
$tracksList2 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
$tracksList1 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, $splittedTracksListLength);
 
$tracksList2 = $this->pickRandomTracksFromArray($selectedPlaylistTracks, $splittedTracksListLength);
// Directly pick first part of this playlist
// Directly pick first part of this playlist
foreach ($tracksList1 as $trackId) {
foreach ($tracksList1 as $trackId) {
@@ -172,14 +174,21 @@ class SpotifyPlaylistService
@@ -172,14 +174,21 @@ class SpotifyPlaylistService
}
}
// Get recommandations for other part
// Get recommandations for other part
$chunks = array_chunk($tracksList2, 5);
$chunks = \array_chunk($tracksList2, 5);
foreach ($chunks as $chunk) {
foreach ($chunks as $chunk) {
$recommendations = $api->getRecommendations([
try {
'seed_tracks' => $chunk,
$recommendations = $api->getRecommendations([
'limit' => \count($chunk)
'seed_tracks' => $chunk,
]);
'limit' => \count($chunk)
foreach ($recommendations->tracks as $recommendedTrack) {
]);
$trackIds[$recommendedTrack->id] = $recommendedTrack;
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