diff --git a/public/index.php b/public/index.php index b39ae21e988e3419831547411ad8818bc1e034a6..271215c40552563050b5df6815100fe82a3dbe42 100644 --- a/public/index.php +++ b/public/index.php @@ -1,5 +1,6 @@ <?php require '../spotify/spotify.php'; +require '../spotify/lib.php'; if (isset($_GET['logout'])) { $_SESSION['accessToken'] = ''; @@ -104,22 +105,8 @@ if ($generatePlaylistFromPlaylist) { $recommendedTrackIds = $filteredTrackIds; } - $recommendedTrackIds = array_keys($recommendedTrackIds); - error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.'); - shuffle($recommendedTrackIds); - $pickedTrackIds = array_slice($recommendedTrackIds, 0, 50); - error_log('Keep '.count($pickedTrackIds).' tracks.'); - - $now = new DateTime(); - $newPlaylistName = 'Fresh playlist ['.$now->format('Y-m-d H:i:s').']'; - error_log('Create new playlist "'.$newPlaylistName.'".'); - $newPlaylist = $api->createPlaylist([ - 'name' => $newPlaylistName, - ]); - - $api->replacePlaylistTracks($newPlaylist->id, $pickedTrackIds); - $playlistLink = '<a href="'.$newPlaylist->external_urls->spotify.'">'.$newPlaylistName.'</a>'; - $templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink; + $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); + $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist->id); } elseif ($generatePlaylistFromArtists) { $selectedArtists = $_GET['selected-artist']; error_log('Will create new playlist with filterted recommendations from artists: '.join(', ', $selectedArtists).'".'); @@ -151,22 +138,8 @@ if ($generatePlaylistFromPlaylist) { } } - $recommendedTrackIds = array_keys($recommendedTrackIds); - error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations.'); - shuffle($recommendedTrackIds); - $pickedTrackIds = array_slice($recommendedTrackIds, 0, 50); - error_log('Keep '.count($pickedTrackIds).' random tracks.'); - - $now = new DateTime(); - $newPlaylistName = 'Fresh playlist ['.$now->format('Y-m-d H:i:s').']'; - error_log('Create new playlist "'.$newPlaylistName.'".'); - $newPlaylist = $api->createPlaylist([ - 'name' => $newPlaylistName, - ]); - - $api->replacePlaylistTracks($newPlaylist->id, $pickedTrackIds); - $playlistLink = '<a href="'.$newPlaylist->external_urls->spotify.'">'.$newPlaylistName.'</a>'; - $templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink; + $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds); + $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist->id); } 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 new file mode 100644 index 0000000000000000000000000000000000000000..60bd26b61cfa77a4815d5742d39781057111a33e --- /dev/null +++ b/spotify/lib.php @@ -0,0 +1,44 @@ +<?php + +function generatePlaylistName() { + $now = new DateTime(); + $name = 'Fresh playlist ['.$now->format('Y-m-d H:i:s').']'; + + return $name; +} + +function createEmptyPlaylist($api) { + $name = generatePlaylistName(); + error_log('Create new playlist "'.$name.'".'); + $playlist = $api->createPlaylist([ + 'name' => $name, + ]); + + return $playlist; +} + +function pickRandomTrackFromArray($recommendedTrackIds, $count = 50) { + $recommendedTrackIds = array_keys($recommendedTrackIds); + error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations.'); + shuffle($recommendedTrackIds); + $pickedTrackIds = array_slice($recommendedTrackIds, 0, 50); + error_log('Keep '.count($pickedTrackIds).' random tracks.'); + + return $pickedTrackIds; +} + +function createPlaylistWithRandomTracks($api, $trackIds, $count = 50) { + $playlist = createEmptyPlaylist($api); + $pickedTrackIds = pickRandomTrackFromArray($trackIds); + $api->replacePlaylistTracks($playlist->id, $pickedTrackIds); + + return $playlist; +} + +function getCreatedPlaylistInformationMessage($api, $playlistId) { + $playlist = $api->getPlaylist($playlistId); + $link = '<a href="'.$playlist->external_urls->spotify.'">'.$playlist->name.'</a>'; + $message = 'Ok created new playlist with '.count($playlist->tracks->items).' tracks: '.$link; + + return $message; +}