diff --git a/public/index.php b/public/index.php
index 4516bddded012b6cb58aed349282cf2bc525d6c2..19e7d16687366387a9842adb30abcd052cc8c6db 100644
--- a/public/index.php
+++ b/public/index.php
@@ -61,6 +61,9 @@ try {
 $topArtistsCount = 40;
 $playlistsCount = 24;
 
+$tracksCountInShortPlaylist = 50;
+$tracksCountInLongPlaylist = 100;
+
 $templateData = [
   'user' => $user,
   'playlists' => [],
@@ -76,153 +79,181 @@ $generatePlaylistFromSelectedTopArtists = isset($_GET['generate-playlist-top-art
 $generatePlaylistFromRandomTopArtists = isset($_GET['generate-playlist-random-top-artists']);
 $showPlaylistContent = isset($_GET['show-playlist']);
 
-
+$action = '';
 if ($generatePlaylistFromPlaylist) {
-    $selectedPlaylists = $_GET['selected-playlist'];
-    printLog('Will create new playlist with recommendations from playlists: '.join(', ', $selectedPlaylists).'".');
-    $recommendedTrackIds = [];
-
-    $shouldFilterByArtists = isset($_GET['check-playlist-filter-artists']);
-    printLog('Filter by artists in source playlists: '.($shouldFilterByArtists ? 'yes' : 'no'));
-
-    $generateLongPlaylist = isset($_GET['check-playlist-long-playlist']);
-    printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
-
-    $artistsInSourcePlaylists = [];
-
-    foreach ($selectedPlaylists as $selectedPlaylistId) {
-        $playlist = $api->getPlaylist($selectedPlaylistId);
-        printLog('Will get recommendations from tracks in playlist "'.$playlist->name.'".');
-        $playlistTracks = $playlist->tracks->items;
-        printLog('Found '.count($playlistTracks).' tracks.');
-        foreach ($playlistTracks as $track) {
-            $artists = [];
-            foreach ($track->track->artists as $artist) {
-                $artists[] = $artist->name;
-                $artistsInSourcePlaylists[$artist->id] = 1;
-            }
-            printLog('Track "'.$track->track->name.'" ('.join(', ', $artists).')');
+    $action = 'generate-playlist-from-playlist';
+} elseif ($generatePlaylistFromSelectedTopArtists) {
+    $action = 'generate-playlist-from-selected-top-artists';
+} elseif ($generatePlaylistFromRandomTopArtists) {
+    $action = 'generate-playlist-from-random-top-artists';
+} elseif ($showPlaylistContent) {
+    $action = 'show-playlist-content';
+} else {
+}
 
-            $recommendations = $api->getRecommendations([
-              'seed_tracks' => [$track->track->id],
-              'limit' => ($generateLongPlaylist ? 50 : 30)
-          ]);
-            printLog(' -> Got '.count($recommendations->tracks).' recommendatations.');
-            foreach ($recommendations->tracks as $recommendedTrack) {
-                $recommendedTrackIds[$recommendedTrack->id] = $recommendedTrack;
-            }
-        }
-    }
-
-    if ($shouldFilterByArtists) {
-        $artistsInSourcePlaylists = array_keys($artistsInSourcePlaylists);
-        printLog('Filter by artists found in source playlists ('.count($artistsInSourcePlaylists).')');
-
-        $filteredTrackIds = [];
-        foreach ($recommendedTrackIds as $trackId => $track) {
-            $trackArtistInWantedArtists = false;
-            foreach ($track->artists as $trackArtist) {
-                if (\in_array($trackArtist->id, $artistsInSourcePlaylists)) {
-                    $filteredTrackIds[$track->id] = 1;
+switch ($action) {
+    case 'generate-playlist-from-playlist':
+        $selectedPlaylists = $_GET['selected-playlist'];
+        printLog('Will create new playlist with recommendations from playlists: '.join(', ', $selectedPlaylists).'".');
+        $recommendedTrackIds = [];
+
+        $shouldFilterByArtists = isset($_GET['check-playlist-filter-artists']);
+        printLog('Filter by artists in source playlists: '.($shouldFilterByArtists ? 'yes' : 'no'));
+
+        $generateLongPlaylist = isset($_GET['check-playlist-long-playlist']);
+        printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
+
+        $artistsInSourcePlaylists = [];
+
+        foreach ($selectedPlaylists as $selectedPlaylistId) {
+            $playlist = $api->getPlaylist($selectedPlaylistId);
+            printLog('Will get recommendations from tracks in playlist "'.$playlist->name.'".');
+            $playlistTracks = $playlist->tracks->items;
+            printLog('Found '.count($playlistTracks).' tracks.');
+            foreach ($playlistTracks as $track) {
+                $artists = [];
+                foreach ($track->track->artists as $artist) {
+                    $artists[] = $artist->name;
+                    $artistsInSourcePlaylists[$artist->id] = 1;
+                }
+                printLog('Track "'.$track->track->name.'" ('.join(', ', $artists).')');
+
+                $recommendations = $api->getRecommendations([
+                  'seed_tracks' => [$track->track->id],
+                  'limit' => ($generateLongPlaylist ? 50 : 30)
+              ]);
+                printLog(' -> Got '.count($recommendations->tracks).' recommendatations.');
+                foreach ($recommendations->tracks as $recommendedTrack) {
+                    $recommendedTrackIds[$recommendedTrack->id] = $recommendedTrack;
                 }
             }
         }
-        $recommendedTrackIds = $filteredTrackIds;
-    }
-
-    $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
-    $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
-
-} elseif ($generatePlaylistFromSelectedTopArtists) {
-
-    $selectedArtists = $_GET['selected-artist'];
-    printLog('Will create new playlist with filterted recommendations from artists: '.join(', ', $selectedArtists).'".');
-    $recommendedTrackIds = [];
 
-    $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
-    printLog('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
+        if ($shouldFilterByArtists) {
+            $artistsInSourcePlaylists = array_keys($artistsInSourcePlaylists);
+            printLog('Filter by artists found in source playlists ('.count($artistsInSourcePlaylists).')');
 
-    $generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
-    printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
-
-    foreach ($selectedArtists as $selectedArtist) {
-        printLog('Get recommendations for artist '.$selectedArtist.'');
-        $recommendations = $api->getRecommendations([
-            'seed_artists' => $selectedArtist,
-            'limit' => 100
-        ]);
-        printLog(' -> Got '.count($recommendations->tracks).' recommendatations.');
-
-        // Filter by artist if requested, remove duplicates
-        foreach ($recommendations->tracks as $recommendedTrack) {
-            if ($shouldFilterByArtists) {
+            $filteredTrackIds = [];
+            foreach ($recommendedTrackIds as $trackId => $track) {
                 $trackArtistInWantedArtists = false;
-                foreach ($recommendedTrack->artists as $trackArtist) {
-                    if (\in_array($trackArtist->id, $selectedArtists)) {
-                        $recommendedTrackIds[$recommendedTrack->id] = 1;
+                foreach ($track->artists as $trackArtist) {
+                    if (\in_array($trackArtist->id, $artistsInSourcePlaylists)) {
+                        $filteredTrackIds[$track->id] = 1;
                     }
                 }
-            } else {
-                $recommendedTrackIds[$recommendedTrack->id] = 1;
             }
+            $recommendedTrackIds = $filteredTrackIds;
         }
-    }
-
-    $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
-    $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
 
-} elseif ($generatePlaylistFromRandomTopArtists) {
+        $newPlaylist = createPlaylistWithRandomTracks(
+            $api,
+            $recommendedTrackIds,
+            $generateLongPlaylist ? $tracksCountInLongPlaylist : $tracksCountInShortPlaylist
+        );
+        $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
+        break;
+    case 'generate-playlist-from-selected-top-artists':
+        $selectedArtists = $_GET['selected-artist'];
+        printLog('Will create new playlist with filterted recommendations from artists: '.join(', ', $selectedArtists).'".');
+        $recommendedTrackIds = [];
+
+        $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
+        printLog('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
+
+        $generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
+        printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
+
+        foreach ($selectedArtists as $selectedArtist) {
+            printLog('Get recommendations for artist '.$selectedArtist.'');
+            $recommendations = $api->getRecommendations([
+                'seed_artists' => $selectedArtist,
+                'limit' => 100
+            ]);
+            printLog(' -> Got '.count($recommendations->tracks).' recommendatations.');
 
-    $countInTopArtists = random_int(4, 6);
-    $countInLessTopArtists = random_int(4, 6);
-    $limitBetweenTopAndLessTop = $topArtistsCount;
-    $selectedArtists = getRandomArtistsFromTopArtists($api, $countInTopArtists, $countInLessTopArtists, $limitBetweenTopAndLessTop);
-    printLog('Will create new playlist with filterted recommendations from random artists: '.join(', ', $selectedArtists).'".');
-    $recommendedTrackIds = [];
-
-    $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
-    printLog('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
-
-    $generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
-    printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
-
-    foreach ($selectedArtists as $selectedArtist) {
-        printLog('Get recommendations for artist '.$selectedArtist.'');
-        $recommendations = $api->getRecommendations([
-            'seed_artists' => $selectedArtist,
-            'limit' => 100
-        ]);
-        printLog(' -> Got '.count($recommendations->tracks).' recommendatations.');
-
-        // Filter by artist if requested, remove duplicates
-        foreach ($recommendations->tracks as $recommendedTrack) {
-            if ($shouldFilterByArtists) {
-                $trackArtistInWantedArtists = false;
-                foreach ($recommendedTrack->artists as $trackArtist) {
-                    if (\in_array($trackArtist->id, $selectedArtists)) {
-                        $recommendedTrackIds[$recommendedTrack->id] = 1;
+            // Filter by artist if requested, remove duplicates
+            foreach ($recommendations->tracks as $recommendedTrack) {
+                if ($shouldFilterByArtists) {
+                    $trackArtistInWantedArtists = false;
+                    foreach ($recommendedTrack->artists as $trackArtist) {
+                        if (\in_array($trackArtist->id, $selectedArtists)) {
+                            $recommendedTrackIds[$recommendedTrack->id] = 1;
+                        }
                     }
+                } else {
+                    $recommendedTrackIds[$recommendedTrack->id] = 1;
                 }
-            } else {
-                $recommendedTrackIds[$recommendedTrack->id] = 1;
             }
         }
-    }
-
-    $newPlaylist = createPlaylistWithRandomTracks($api, $recommendedTrackIds, $generateLongPlaylist ? 100 : 50);
-    $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
 
-} elseif ($showPlaylistContent) {
-    printLog('Get content of playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
+        $newPlaylist = createPlaylistWithRandomTracks(
+            $api,
+            $recommendedTrackIds,
+            $generateLongPlaylist ? $tracksCountInLongPlaylist : $tracksCountInShortPlaylist
+        );
+        $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
+        break;
+    case 'generate-playlist-from-random-top-artists':
+        $countInTopArtists = random_int(4, 6);
+        $countInLessTopArtists = random_int(4, 6);
+        $limitBetweenTopAndLessTop = $topArtistsCount;
+        $selectedArtists = getRandomArtistsFromTopArtists(
+            $api,
+            $countInTopArtists,
+            $countInLessTopArtists,
+            $limitBetweenTopAndLessTop
+        );
+        printLog('Will create new playlist with filterted recommendations from random artists: '.join(', ', $selectedArtists).'".');
+        $recommendedTrackIds = [];
+
+        $shouldFilterByArtists = isset($_GET['check-top-artist-filter-artists']);
+        printLog('Filter by artists in selection: '.($shouldFilterByArtists ? 'yes' : 'no'));
+
+        $generateLongPlaylist = isset($_GET['check-top-artist-long-playlist']);
+        printLog('Generate long playlist: '.($generateLongPlaylist ? 'yes' : 'no'));
+
+        foreach ($selectedArtists as $selectedArtist) {
+            printLog('Get recommendations for artist '.$selectedArtist.'');
+            $recommendations = $api->getRecommendations([
+                'seed_artists' => $selectedArtist,
+                'limit' => 100
+            ]);
+            printLog(' -> Got '.count($recommendations->tracks).' recommendations.');
 
-    $playlistId = $_GET['id'];
-    $playlist = $api->getPlaylist($playlistId);
-    $templateData['infos'][] = getPlaylistInformationMessage($api, $playlist);
-    $templateData['playlist'] = createDisplayablePlaylist($playlist);
+            // Filter by artist if requested, remove duplicates
+            foreach ($recommendations->tracks as $recommendedTrack) {
+                if ($shouldFilterByArtists) {
+                    $trackArtistInWantedArtists = false;
+                    foreach ($recommendedTrack->artists as $trackArtist) {
+                        if (\in_array($trackArtist->id, $selectedArtists)) {
+                            $recommendedTrackIds[$recommendedTrack->id] = 1;
+                        }
+                    }
+                } else {
+                    $recommendedTrackIds[$recommendedTrack->id] = 1;
+                }
+            }
+        }
 
-} else {
-    $templateData['topArtists'] = $api->getMyTop('artists', ['limit' => $topArtistsCount, 'time_range' => 'short_term'])->items;
-    $templateData['playlists'] = $api->getUserPlaylists($user['id'], ['limit' => $playlistsCount])->items;
+        $newPlaylist = createPlaylistWithRandomTracks(
+            $api,
+            $recommendedTrackIds,
+            $generateLongPlaylist ? $tracksCountInLongPlaylist : $tracksCountInShortPlaylist
+        );
+        $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
+        break;
+    case 'show-playlist-content':
+        printLog('Get content of playlist');
+
+        $playlistId = $_GET['id'];
+        $playlist = $api->getPlaylist($playlistId);
+        $templateData['infos'][] = getPlaylistInformationMessage($api, $playlist);
+        $templateData['playlist'] = createDisplayablePlaylist($playlist);
+        break;
+    default:
+        $templateData['topArtists'] = $api->getMyTop('artists', ['limit' => $topArtistsCount, 'time_range' => 'short_term'])->items;
+        $templateData['playlists'] = $api->getUserPlaylists($user['id'], ['limit' => $playlistsCount])->items;
+        break;
 }
 
 require '../template.php';
diff --git a/spotify/lib.php b/spotify/lib.php
index 1d4a4a490d284e2ada5376562336cec60b481f6d..8844ab410e2e35b3cbf438013c1fc6e5542dc8fc 100644
--- a/spotify/lib.php
+++ b/spotify/lib.php
@@ -11,17 +11,17 @@ function generateShowPlaylistUrl($playlistId) {
     return '/view-playlist-'.$playlistId;
 }
 
-function generatePlaylistName()
+function generatePlaylistName($prefix)
 {
     $now = new DateTime();
-    $name = 'Fresh playlist ['.$now->format('Y-m-d H:i:s').']';
+    $name = $prefix.' ['.$now->format('Y-m-d H:i:s').']';
 
     return $name;
 }
 
-function createEmptyPlaylist($api)
+function createEmptyPlaylist($api, $playlistName = 'Auto playlist')
 {
-    $name = generatePlaylistName();
+    $name = generatePlaylistName($playlistName);
     printLog('Create new playlist "'.$name.'".');
     $playlist = $api->createPlaylist([
         'name' => $name,
@@ -30,11 +30,16 @@ function createEmptyPlaylist($api)
     return $playlist;
 }
 
-function pickRandomTracksFromArray($recommendedTrackIds, $count = 50)
+function pickRandomTracksFromArray($recommendedTrackIds, $count = 0)
 {
     $recommendedTrackIds = array_keys($recommendedTrackIds);
-    printLog('=> Got '.count($recommendedTrackIds).' unique recommendatations.');
+    printLog('=> Got '.count($recommendedTrackIds).' unique tracks.');
     shuffle($recommendedTrackIds);
+
+    if (!$count) {
+        return $recommendedTrackIds;
+    }
+
     $pickedTrackIds = array_slice($recommendedTrackIds, 0, $count);
     printLog('Keep '.count($pickedTrackIds).' random tracks.');
 
@@ -77,7 +82,7 @@ function getRandomArtistsFromTopArtists($api, $countInTopArtists, $countInLessTo
 
 function createPlaylistWithRandomTracks($api, $trackIds, $count = 50)
 {
-    $playlist = createEmptyPlaylist($api);
+    $playlist = createEmptyPlaylist($api, 'Fresh playlist');
     $pickedTrackIds = pickRandomTracksFromArray($trackIds, $count);
     $api->replacePlaylistTracks($playlist->id, $pickedTrackIds);