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) {
$shouldFilterByArtists = isset($_GET['check-playlist-filter-artists']);
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 = [];
foreach ($selectedPlaylists as $selectedPlaylistId) {
......@@ -82,7 +86,7 @@ if ($generatePlaylistFromPlaylist) {
$recommendations = $api->getRecommendations([
'seed_tracks' => [$track->track->id],
'limit' => 40
'limit' => ($generateLongPlaylist ? 50 : 30)
]);
error_log(' -> Got '.count($recommendations->tracks).' recommendatations.');
foreach ($recommendations->tracks as $recommendedTrack) {
......@@ -107,7 +111,7 @@ if ($generatePlaylistFromPlaylist) {
$recommendedTrackIds = $filteredTrackIds;
}
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds);
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
......@@ -120,6 +124,9 @@ if ($generatePlaylistFromPlaylist) {
$shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
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) {
error_log('Get recommendations for artist '.$selectedArtist.'');
$recommendations = $api->getRecommendations([
......@@ -143,7 +150,7 @@ if ($generatePlaylistFromPlaylist) {
}
}
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds);
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
......@@ -159,6 +166,9 @@ if ($generatePlaylistFromPlaylist) {
$shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
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) {
error_log('Get recommendations for artist '.$selectedArtist.'');
$recommendations = $api->getRecommendations([
......@@ -182,7 +192,7 @@ if ($generatePlaylistFromPlaylist) {
}
}
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds);
$newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
$templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
$templateData['playlist'] = createDisplayablePlaylist($newPlaylist);
} else {
......
......@@ -19,12 +19,12 @@ function createEmptyPlaylist($api)
return $playlist;
}
function pickRandomTrackFromArray($recommendedTrackIds, $count = 50)
function pickRandomTracksFromArray($recommendedTrackIds, $count = 50)
{
$recommendedTrackIds = array_keys($recommendedTrackIds);
error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations.');
shuffle($recommendedTrackIds);
$pickedTrackIds = array_slice($recommendedTrackIds, 0, 50);
$pickedTrackIds = array_slice($recommendedTrackIds, 0, $count);
error_log('Keep '.count($pickedTrackIds).' random tracks.');
return $pickedTrackIds;
......@@ -67,7 +67,7 @@ function getRandomArtistsFromTopArtists($api, $countInTopArtists, $countInLessTo
function createPlaylistWithRandomTracks($api, $trackIds, $count = 50)
{
$playlist = createEmptyPlaylist($api);
$pickedTrackIds = pickRandomTrackFromArray($trackIds);
$pickedTrackIds = pickRandomTracksFromArray($trackIds, $count);
$api->replacePlaylistTracks($playlist->id, $pickedTrackIds);
return $api->getPlaylist($playlist->id);
......
......@@ -87,6 +87,7 @@
</ul>
<div class="row">
<div class="col-md-8 col-sm-12">
<div>
<input
type="checkbox"
class="custom-control-input"
......@@ -99,6 +100,19 @@
Allow only selected artists in recommendations
</label>
</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="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>
......@@ -135,6 +149,7 @@
</ul>
<div class="row">
<div class="col-md-8 col-sm-12">
<div>
<input
type="checkbox"
class="custom-control-input"
......@@ -147,6 +162,19 @@
Allow only artists in selected playlists in recommendations
</label>
</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">
<button name="generate-playlist-from-playlist" type="submit" class="btn btn-secondary float-end">🎶 Generate!</button>
</div>
......