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

Merge branch '53-fix-create-tambouille-long-playlist' into 'master'

Resolve "Fix create tambouille long playlist"

Closes #53

See merge request !47
parents c5f44807 13c5c2f3
Branches
1 merge request!47Resolve "Fix create tambouille long playlist"
...@@ -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;
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment