Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 11-improve-new-playlist-name-and-description
  • 15-add-a-play-now-button-on-created-playlist-message
  • 20-rename-playlist-with-artists-names
  • 30-save-spotify-personal-token-for-external-use
  • 37-batch-update-recently-played-tracks
  • 40-add-more-default-playlists-in-quick-create-feature
  • 58-create-api-for-main-routes
  • 60-display-last-tracks-and-some-dump-metadata
  • master
9 results

Target

Select target project
  • web/spotify
1 result
Select Git revision
  • 11-improve-new-playlist-name-and-description
  • 15-add-a-play-now-button-on-created-playlist-message
  • 20-rename-playlist-with-artists-names
  • 30-save-spotify-personal-token-for-external-use
  • 37-batch-update-recently-played-tracks
  • 40-add-more-default-playlists-in-quick-create-feature
  • 58-create-api-for-main-routes
  • 60-display-last-tracks-and-some-dump-metadata
  • master
9 results
Show changes
Commits on Source (8)
...@@ -65,6 +65,10 @@ if ($generatePlaylistFromPlaylist) { ...@@ -65,6 +65,10 @@ if ($generatePlaylistFromPlaylist) {
$shouldFilterByArtists = isset($_GET['check-playlist-filter-artists']); $shouldFilterByArtists = isset($_GET['check-playlist-filter-artists']);
error_log('Filter by artists in source playlists: '.($shouldFilterByArtists ? 'yes' : 'no')); error_log('Filter by artists in source playlists: '.($shouldFilterByArtists ? 'yes' : 'no'));
$generateLongPlaylist = isset($_GET['check-playlist-long-playlist']);
error_log('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
$artistsInSourcePlaylists = []; $artistsInSourcePlaylists = [];
foreach ($selectedPlaylists as $selectedPlaylistId) { foreach ($selectedPlaylists as $selectedPlaylistId) {
...@@ -82,7 +86,7 @@ if ($generatePlaylistFromPlaylist) { ...@@ -82,7 +86,7 @@ if ($generatePlaylistFromPlaylist) {
$recommendations = $api->getRecommendations([ $recommendations = $api->getRecommendations([
'seed_tracks' => [$track->track->id], 'seed_tracks' => [$track->track->id],
'limit' => 40 'limit' => ($generateLongPlaylist ? 50 : 30)
]); ]);
error_log(' -> Got '.count($recommendations->tracks).' recommendatations.'); error_log(' -> Got '.count($recommendations->tracks).' recommendatations.');
foreach ($recommendations->tracks as $recommendedTrack) { foreach ($recommendations->tracks as $recommendedTrack) {
...@@ -107,7 +111,7 @@ if ($generatePlaylistFromPlaylist) { ...@@ -107,7 +111,7 @@ if ($generatePlaylistFromPlaylist) {
$recommendedTrackIds = $filteredTrackIds; $recommendedTrackIds = $filteredTrackIds;
} }
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist); $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist); $templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
...@@ -120,6 +124,9 @@ if ($generatePlaylistFromPlaylist) { ...@@ -120,6 +124,9 @@ if ($generatePlaylistFromPlaylist) {
$shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']); $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
error_log('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no')); error_log('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
$generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
error_log('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
foreach ($selectedArtists as $selectedArtist) { foreach ($selectedArtists as $selectedArtist) {
error_log('Get recommendations for artist '.$selectedArtist.''); error_log('Get recommendations for artist '.$selectedArtist.'');
$recommendations = $api->getRecommendations([ $recommendations = $api->getRecommendations([
...@@ -143,7 +150,7 @@ if ($generatePlaylistFromPlaylist) { ...@@ -143,7 +150,7 @@ if ($generatePlaylistFromPlaylist) {
} }
} }
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist); $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist); $templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
...@@ -159,6 +166,9 @@ if ($generatePlaylistFromPlaylist) { ...@@ -159,6 +166,9 @@ if ($generatePlaylistFromPlaylist) {
$shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']); $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
error_log('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no')); error_log('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
$generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
error_log('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
foreach ($selectedArtists as $selectedArtist) { foreach ($selectedArtists as $selectedArtist) {
error_log('Get recommendations for artist '.$selectedArtist.''); error_log('Get recommendations for artist '.$selectedArtist.'');
$recommendations = $api->getRecommendations([ $recommendations = $api->getRecommendations([
...@@ -182,7 +192,7 @@ if ($generatePlaylistFromPlaylist) { ...@@ -182,7 +192,7 @@ if ($generatePlaylistFromPlaylist) {
} }
} }
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist); $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist); $templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
} else { } else {
......
...@@ -19,12 +19,12 @@ function createEmptyPlaylist($api) ...@@ -19,12 +19,12 @@ function createEmptyPlaylist($api)
return $playlist; return $playlist;
} }
function pickRandomTrackFromArray($recommendedTrackIds, $count = 50) function pickRandomTracksFromArray($recommendedTrackIds, $count = 50)
{ {
$recommendedTrackIds = array_keys($recommendedTrackIds); $recommendedTrackIds = array_keys($recommendedTrackIds);
error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations.'); error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations.');
shuffle($recommendedTrackIds); shuffle($recommendedTrackIds);
$pickedTrackIds = array_slice($recommendedTrackIds, 0, 50); $pickedTrackIds = array_slice($recommendedTrackIds, 0, $count);
error_log('Keep '.count($pickedTrackIds).' random tracks.'); error_log('Keep '.count($pickedTrackIds).' random tracks.');
return $pickedTrackIds; return $pickedTrackIds;
...@@ -67,7 +67,7 @@ function getRandomArtistsFromTopArtists($api, $countInTopArtists, $countInLessTo ...@@ -67,7 +67,7 @@ function getRandomArtistsFromTopArtists($api, $countInTopArtists, $countInLessTo
function createPlaylistWithRandomTracks($api, $trackIds, $count = 50) function createPlaylistWithRandomTracks($api, $trackIds, $count = 50)
{ {
$playlist = createEmptyPlaylist($api); $playlist = createEmptyPlaylist($api);
$pickedTrackIds = pickRandomTrackFromArray($trackIds); $pickedTrackIds = pickRandomTracksFromArray($trackIds, $count);
$api->replacePlaylistTracks($playlist->id, $pickedTrackIds); $api->replacePlaylistTracks($playlist->id, $pickedTrackIds);
return $api->getPlaylist($playlist->id); return $api->getPlaylist($playlist->id);
......
...@@ -87,6 +87,7 @@ ...@@ -87,6 +87,7 @@
</ul> </ul>
<div class="row"> <div class="row">
<div class="col-md-8 col-sm-12"> <div class="col-md-8 col-sm-12">
<div>
<input <input
type="checkbox" type="checkbox"
class="custom-control-input" class="custom-control-input"
...@@ -99,6 +100,19 @@ ...@@ -99,6 +100,19 @@
Allow only selected artists in recommendations Allow only selected artists in recommendations
</label> </label>
</div> </div>
<div>
<input
type="checkbox"
class="custom-control-input"
id="check-top-artist-long-playlist"
name="check-top-artist-long-playlist"
value="long-playlist"
>
<label class="custom-control-label" for="check-top-artist-long-playlist">
Generate a long playlist (x2)
</label>
</div>
</div>
<div class="col-md-4 col-sm-12"> <div class="col-md-4 col-sm-12">
<div class="btn-group float-end" role="group" aria-label="Action buttons"> <div class="btn-group float-end" role="group" aria-label="Action buttons">
<button name="generate-playlist-random-top-artists" type="submit" class="btn btn-secondary">🎲 Random!</button> <button name="generate-playlist-random-top-artists" type="submit" class="btn btn-secondary">🎲 Random!</button>
...@@ -135,6 +149,7 @@ ...@@ -135,6 +149,7 @@
</ul> </ul>
<div class="row"> <div class="row">
<div class="col-md-8 col-sm-12"> <div class="col-md-8 col-sm-12">
<div>
<input <input
type="checkbox" type="checkbox"
class="custom-control-input" class="custom-control-input"
...@@ -147,6 +162,19 @@ ...@@ -147,6 +162,19 @@
Allow only artists in selected playlists in recommendations Allow only artists in selected playlists in recommendations
</label> </label>
</div> </div>
<div>
<input
type="checkbox"
class="custom-control-input"
id="check-playlist-long-playlist"
name="check-playlist-long-playlist"
value="long-playlist"
>
<label class="custom-control-label" for="check-playlist-long-playlist">
Generate a long playlist (x2)
</label>
</div>
</div>
<div class="col-md-4 col-sm-12"> <div class="col-md-4 col-sm-12">
<button name="generate-playlist-from-playlist" type="submit" class="btn btn-secondary float-end">🎶 Generate!</button> <button name="generate-playlist-from-playlist" type="submit" class="btn btn-secondary float-end">🎶 Generate!</button>
</div> </div>
......