diff --git a/public/index.php b/public/index.php index d0ee203bc3cd4498f9b7c1c4b8f191347bb556cc..d006f2d4da1e78ea0a6cc469c4ece42c5672ec46 100644 --- a/public/index.php +++ b/public/index.php @@ -48,6 +48,7 @@ $templateData = [ 'user' => $user, 'playlists' => [], 'topArtists' => [], + 'playlist' => null, 'infos' => [], 'errors' => [], @@ -106,7 +107,8 @@ if ($generatePlaylistFromPlaylist) { } $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); - $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist->id); + $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist); + $templateData['playlist'] = createDisplayablePlaylist($newPlaylist); } elseif ($generatePlaylistFromArtists) { $selectedArtists = $_GET['selected-artist']; error_log('Will create new playlist with filterted recommendations from artists: '.join(', ', $selectedArtists).'".'); @@ -139,7 +141,8 @@ if ($generatePlaylistFromPlaylist) { } $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); - $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist->id); + $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist); + $templateData['playlist'] = createDisplayablePlaylist($newPlaylist); } else { $templateData['topArtists'] = $api->getMyTop('artists', ['limit' => $topArtistsCount, 'time_range' => 'short_term'])->items; $templateData['playlists'] = $api->getUserPlaylists($user->id, ['limit' => $playlistsCount])->items; diff --git a/spotify/lib.php b/spotify/lib.php index 60bd26b61cfa77a4815d5742d39781057111a33e..ac781de6d8a5d7eb35974632aa0b6cbadde784d7 100644 --- a/spotify/lib.php +++ b/spotify/lib.php @@ -32,13 +32,45 @@ function createPlaylistWithRandomTracks($api, $trackIds, $count = 50) { $pickedTrackIds = pickRandomTrackFromArray($trackIds); $api->replacePlaylistTracks($playlist->id, $pickedTrackIds); - return $playlist; + return $api->getPlaylist($playlist->id); } -function getCreatedPlaylistInformationMessage($api, $playlistId) { - $playlist = $api->getPlaylist($playlistId); +function getCreatedPlaylistInformationMessage($api, $playlist) { $link = '<a href="'.$playlist->external_urls->spotify.'">'.$playlist->name.'</a>'; $message = 'Ok created new playlist with '.count($playlist->tracks->items).' tracks: '.$link; return $message; } + +function createDisplayablePlaylist($playlist) { + $output = [ + 'id' => $playlist->id, + 'name' => $playlist->name, + 'tracks' => [], + 'artists' => [], + ]; + + $artists = []; + + foreach($playlist->tracks->items as $item) { + $track = [ + 'id' => $item->track->id, + 'name' => $item->track->name, + 'artists' => [], + ]; + + foreach($item->track->artists as $artist) { + $track['artists'][] = [ + 'id' => $artist->id, + 'name' => $artist->name, + ]; + $artists[$artist->id] = $artist->name; + } + + $output['tracks'][] = $track; + } + + $output['artists'] = array_values($artists); + + return $output; +} diff --git a/template.php b/template.php index 11cb5dbe5e2bc235f5d21670078a6deaa29871ef..c6f9640d3c3ea1d6c7bedaad1690ac408e501f42 100644 --- a/template.php +++ b/template.php @@ -145,6 +145,16 @@ </form> <?php } ?> + <?php if ($templateData['playlist'] && count($templateData['playlist'])) { ?> + <div class="alert alert-info"> + <ul> + <?php foreach ($templateData['playlist']['artists'] as $artist) { ?> + <li><?php echo $artist; ?></li> + <?php } ?> + </ul> + </div> + <?php } ?> + </div> <script src="js/bootstrap.min.js"></script>