Skip to content
Snippets Groups Projects

Resolve "Improve create playlist from existing playlist"

Merged Benoît Harrault requested to merge 8-improve-create-playlist-from-existing-playlist into master
2 files
+ 48
32
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 26
24
@@ -49,35 +49,37 @@ $templateData = [
'errors' => [],
];
$selectedPlaylistId = '';
if (isset($_GET['playlist'])) {
$selectedPlaylistId = $_GET['playlist'];
}
$generatePlaylistFromPlaylist = isset($_GET['generate-playlist-from-playlist']);
$generatePlaylistFromArtists = isset($_GET['generate-playlist-top-artists']);
if ($selectedPlaylistId) {
$playlist = $api->getPlaylist($selectedPlaylistId);
error_log('Will create new playlist from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".');
if ($generatePlaylistFromPlaylist) {
$selectedPlaylists = $_GET['selected-playlist'];
error_log('Will create new playlist with recommendations from playlists: '.join(', ', $selectedPlaylists).'".');
$recommendedTrackIds = [];
$playlistTracks = $playlist->tracks->items;
error_log('Found '.count($playlistTracks).' tracks.');
foreach ($playlistTracks as $track) {
$artists = [];
foreach ($track->track->artists as $artist) {
$artists[] = $artist->name;
}
error_log('Track '.$track->track->id.' "'.$track->track->name.'" ('.join(', ', $artists).')');
$recommendations = $api->getRecommendations([
'seed_tracks' => [$track->track->id],
'limit' => 20
]);
error_log(' -> Got '.count($recommendations->tracks).' recommendatations.');
foreach ($recommendations->tracks as $recommendedTrack) {
$recommendedTrackIds[$recommendedTrack->id] = 1;
foreach ($selectedPlaylists as $selectedPlaylistId) {
$playlist = $api->getPlaylist($selectedPlaylistId);
error_log('Will get recommendations from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".');
$playlistTracks = $playlist->tracks->items;
error_log('Found '.count($playlistTracks).' tracks.');
foreach ($playlistTracks as $track) {
$artists = [];
foreach ($track->track->artists as $artist) {
$artists[] = $artist->name;
}
error_log('Track '.$track->track->id.' "'.$track->track->name.'" ('.join(', ', $artists).')');
$recommendations = $api->getRecommendations([
'seed_tracks' => [$track->track->id],
'limit' => 20
]);
error_log(' -> Got '.count($recommendations->tracks).' recommendatations.');
foreach ($recommendations->tracks as $recommendedTrack) {
$recommendedTrackIds[$recommendedTrack->id] = 1;
}
}
}
$recommendedTrackIds = array_keys($recommendedTrackIds);
error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.');
shuffle($recommendedTrackIds);
@@ -136,7 +138,7 @@ if ($selectedPlaylistId) {
$templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink;
} else {
$templateData['topArtists'] = $api->getMyTop('artists', ['limit' => 16, 'time_range' => 'short_term'])->items;
$templateData['playlists'] = $api->getUserPlaylists($user->id)->items;
$templateData['playlists'] = $api->getUserPlaylists($user->id, ['limit' => 30])->items;
}
require '../template.php';
Loading