From 25745181c7f36685ba0f4197de55c093677facbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Mon, 21 Feb 2022 11:33:38 +0100 Subject: [PATCH] Add option to generate long playlists --- public/index.php | 22 ++++++++++---- template.php | 74 ++++++++++++++++++++++++++++++++++-------------- 2 files changed, 68 insertions(+), 28 deletions(-) diff --git a/public/index.php b/public/index.php index c9ece07..dbcc285 100644 --- a/public/index.php +++ b/public/index.php @@ -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,11 +124,14 @@ 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([ 'seed_artists' => $selectedArtist, - 'limit' => 100 + 'limit' => ($generateLongPlaylist ? 150 : 100) ]); error_log(' -> Got '.count($recommendations->tracks).' recommendatations.'); @@ -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,11 +166,14 @@ 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([ 'seed_artists' => $selectedArtist, - 'limit' => 100 + 'limit' => ($generateLongPlaylist ? 150 : 100) ]); error_log(' -> Got '.count($recommendations->tracks).' recommendatations.'); @@ -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 { diff --git a/template.php b/template.php index c2ed0fc..536363c 100644 --- a/template.php +++ b/template.php @@ -87,17 +87,32 @@ </ul> <div class="row"> <div class="col-md-8 col-sm-12"> - <input - type="checkbox" - class="custom-control-input" - id="check-top-artist-filter-artists" - name="check-top-artist-filter-artists" - value="filter-artists" - checked - > - <label class="custom-control-label" for="check-top-artist-filter-artists"> - Allow only selected artists in recommendations - </label> + <div> + <input + type="checkbox" + class="custom-control-input" + id="check-top-artist-filter-artists" + name="check-top-artist-filter-artists" + value="filter-artists" + checked + > + <label class="custom-control-label" for="check-top-artist-filter-artists"> + 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" + checked + > + <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"> @@ -135,17 +150,32 @@ </ul> <div class="row"> <div class="col-md-8 col-sm-12"> - <input - type="checkbox" - class="custom-control-input" - id="check-playlist-filter-artists" - name="check-playlist-filter-artists" - value="filter-artists" - checked - > - <label class="custom-control-label" for="check-playlist-filter-artists"> - Allow only artists in selected playlists in recommendations - </label> + <div> + <input + type="checkbox" + class="custom-control-input" + id="check-playlist-filter-artists" + name="check-playlist-filter-artists" + value="filter-artists" + checked + > + <label class="custom-control-label" for="check-playlist-filter-artists"> + 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" + checked + > + <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> -- GitLab