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

Merge branch '8-improve-create-playlist-from-existing-playlist' into 'master'

Resolve "Improve create playlist from existing playlist"

Closes #8

See merge request !7
parents c397460b f08093ec
No related branches found
No related tags found
1 merge request!7Resolve "Improve create playlist from existing playlist"
...@@ -49,17 +49,17 @@ $templateData = [ ...@@ -49,17 +49,17 @@ $templateData = [
'errors' => [], 'errors' => [],
]; ];
$selectedPlaylistId = ''; $generatePlaylistFromPlaylist = isset($_GET['generate-playlist-from-playlist']);
if (isset($_GET['playlist'])) {
$selectedPlaylistId = $_GET['playlist'];
}
$generatePlaylistFromArtists = isset($_GET['generate-playlist-top-artists']); $generatePlaylistFromArtists = isset($_GET['generate-playlist-top-artists']);
if ($selectedPlaylistId) { if ($generatePlaylistFromPlaylist) {
$playlist = $api->getPlaylist($selectedPlaylistId); $selectedPlaylists = $_GET['selected-playlist'];
error_log('Will create new playlist from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".'); error_log('Will create new playlist with recommendations from playlists: '.join(', ', $selectedPlaylists).'".');
$recommendedTrackIds = []; $recommendedTrackIds = [];
foreach ($selectedPlaylists as $selectedPlaylistId) {
$playlist = $api->getPlaylist($selectedPlaylistId);
error_log('Will get recommendations from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".');
$playlistTracks = $playlist->tracks->items; $playlistTracks = $playlist->tracks->items;
error_log('Found '.count($playlistTracks).' tracks.'); error_log('Found '.count($playlistTracks).' tracks.');
foreach ($playlistTracks as $track) { foreach ($playlistTracks as $track) {
...@@ -78,6 +78,8 @@ if ($selectedPlaylistId) { ...@@ -78,6 +78,8 @@ if ($selectedPlaylistId) {
$recommendedTrackIds[$recommendedTrack->id] = 1; $recommendedTrackIds[$recommendedTrack->id] = 1;
} }
} }
}
$recommendedTrackIds = array_keys($recommendedTrackIds); $recommendedTrackIds = array_keys($recommendedTrackIds);
error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.'); error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.');
shuffle($recommendedTrackIds); shuffle($recommendedTrackIds);
...@@ -136,7 +138,7 @@ if ($selectedPlaylistId) { ...@@ -136,7 +138,7 @@ if ($selectedPlaylistId) {
$templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink; $templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink;
} else { } else {
$templateData['topArtists'] = $api->getMyTop('artists', ['limit' => 16, 'time_range' => 'short_term'])->items; $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'; require '../template.php';
...@@ -72,14 +72,28 @@ ...@@ -72,14 +72,28 @@
<?php } ?> <?php } ?>
<?php if (count($templateData['playlists'])) { ?> <?php if (count($templateData['playlists'])) { ?>
<h3>Please pick a playlist to get recommendations from:</h3> <form class="clearfix">
<div class="list-group"> <legend>Generate playlist from tracks in existing playlist:</legend>
<ul class="list-unstyled row row-cols-2">
<?php foreach ($templateData['playlists'] as $playlist) { ?> <?php foreach ($templateData['playlists'] as $playlist) { ?>
<a href="index.php?playlist=<?php echo $playlist->id; ?>" class="list-group-item list-group-item-action"> <li class="col">
<div class="custom-control custom-checkbox">
<input
type="checkbox"
class="custom-control-input"
id="check-playlist-<?php echo $playlist->id; ?>"
name="selected-playlist[]"
value="<?php echo $playlist->id; ?>"
>
<label class="custom-control-label" for="check-playlist-<?php echo $playlist->id; ?>">
<?php echo $playlist->name; ?> <?php echo $playlist->name; ?>
</a> </label>
<?php } ?>
</div> </div>
</li>
<?php } ?>
</ul>
<button name="generate-playlist-from-playlist" type="submit" class="btn btn-secondary float-end">🎶 Generate!</button>
</form>
<?php } ?> <?php } ?>
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment