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

Improve create playlist from existing playlist tracks

parent c397460b
No related branches found
No related tags found
1 merge request!7Resolve "Improve create playlist from existing playlist"
This commit is part of merge request !7. Comments created here will be created in the context of that merge request.
...@@ -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