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 = [
'errors' => [],
];
$selectedPlaylistId = '';
if (isset($_GET['playlist'])) {
$selectedPlaylistId = $_GET['playlist'];
}
$generatePlaylistFromPlaylist = isset($_GET['generate-playlist-from-playlist']);
$generatePlaylistFromArtists = isset($_GET['generate-playlist-top-artists']);
if ($selectedPlaylistId) {
$playlist = $api->getPlaylist($selectedPlaylistId);
error_log('Will create new playlist from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".');
if ($generatePlaylistFromPlaylist) {
$selectedPlaylists = $_GET['selected-playlist'];
error_log('Will create new playlist with recommendations from playlists: '.join(', ', $selectedPlaylists).'".');
$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;
error_log('Found '.count($playlistTracks).' tracks.');
foreach ($playlistTracks as $track) {
......@@ -78,6 +78,8 @@ if ($selectedPlaylistId) {
$recommendedTrackIds[$recommendedTrack->id] = 1;
}
}
}
$recommendedTrackIds = array_keys($recommendedTrackIds);
error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.');
shuffle($recommendedTrackIds);
......@@ -136,7 +138,7 @@ if ($selectedPlaylistId) {
$templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink;
} else {
$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';
......@@ -72,14 +72,28 @@
<?php } ?>
<?php if (count($templateData['playlists'])) { ?>
<h3>Please pick a playlist to get recommendations from:</h3>
<div class="list-group">
<form class="clearfix">
<legend>Generate playlist from tracks in existing playlist:</legend>
<ul class="list-unstyled row row-cols-2">
<?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; ?>
</a>
<?php } ?>
</label>
</div>
</li>
<?php } ?>
</ul>
<button name="generate-playlist-from-playlist" type="submit" class="btn btn-secondary float-end">🎶 Generate!</button>
</form>
<?php } ?>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment