diff --git a/public/index.php b/public/index.php
index 0c64493bd853ae22f1a4fc3a7cb128b8d3eda966..c4203304c2a85f1383f3cc6201c729d7592d1fc9 100644
--- a/public/index.php
+++ b/public/index.php
@@ -78,6 +78,7 @@ $generatePlaylistFromPlaylist = isset($_GET['generate-playlist-from-playlist']);
 $generatePlaylistFromSelectedTopArtists = isset($_GET['generate-playlist-top-artists']);
 $generatePlaylistFromRandomTopArtists = isset($_GET['generate-playlist-random-top-artists']);
 $generateQuickPlaylistFromDailyMixes = isset($_GET['generate-quick-playlist-from-daily-mixes']);
+$generateQuickPlaylistTambouilleMix = isset($_GET['generate-quick-playlist-tambouille-mix']);
 $showPlaylistContent = isset($_GET['show-playlist']);
 
 $action = '';
@@ -89,6 +90,8 @@ if ($generatePlaylistFromPlaylist) {
     $action = 'generate-playlist-from-random-top-artists';
 } elseif ($generateQuickPlaylistFromDailyMixes) {
     $action = 'generate-playlist-from-daily-mixes';
+} elseif ($generateQuickPlaylistTambouilleMix) {
+    $action = 'generate-playlist-tambouille-mix';
 } elseif ($showPlaylistContent) {
     $action = 'show-playlist-content';
 } else {
@@ -260,6 +263,18 @@ switch ($action) {
         $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
         break;
 
+    case 'generate-playlist-tambouille-mix':
+        $generateLongPlaylist = isset($_GET['check-quick-create-long-playlist']);
+
+        printLog('Generate tambouille mix playlist (long playlist :'.($generateLongPlaylist ? 'yes' : 'no').')');
+
+        $newPlaylist = createPlaylistTambouilleMix(
+            $api,
+            $generateLongPlaylist ? $tracksCountInLongPlaylist : $tracksCountInShortPlaylist
+        );
+        $templateData['infos'][] = getCreatedPlaylistInformationMessage($api, $newPlaylist);
+        break;
+
     case 'show-playlist-content':
         printLog('Get content of playlist');
         $playlistId = $_GET['id'];
diff --git a/spotify/lib.php b/spotify/lib.php
index d2c33862d07075c20aad839242a1073d84dc2911..2653469f307e289f017841ae9cacab4b149a549d 100644
--- a/spotify/lib.php
+++ b/spotify/lib.php
@@ -120,6 +120,71 @@ function createPlaylistFromDailyMixesTracks($api, $count = 50)
     return $api->getPlaylist($playlist->id);
 }
 
+function createPlaylistTambouilleMix($api, $count = 50)
+{
+    // Get specific playlists
+    $wantedPlaylistsNames = [
+        'Daily Mix 1',
+        'Daily Mix 2',
+        'Radar des sorties',
+        'Discover Weekly', # "Découvertes de la semaine"
+        'Your Time Capsule', # "Votre Capsule Temporelle"
+        'On Repeat', # "En boucle"
+        'Repeat Rewind', # "En boucle : flashback"
+    ];
+
+    $userPlaylists = getAllPlaylistsFromUserId($api, $api->me()->id);
+    $userPlaylistsByName = [];
+    foreach ($userPlaylists as $userPlaylist) {
+        $userPlaylistsByName[$userPlaylist->name] = $userPlaylist->id;
+    }
+
+    // Get all tracks, pick some and get recommandations from playlists
+    $trackIds = [];
+    foreach ($wantedPlaylistsNames as $playlistName) {
+        if (\array_key_exists($playlistName, $userPlaylistsByName)) {
+            $playlistId = $userPlaylistsByName[$playlistName];
+            $selectedPlaylist = $api->getPlaylist($playlistId);
+
+            $tracks = $selectedPlaylist->tracks->items;
+            foreach ($tracks as $track) {
+                $trackId = $track->track->id;
+                $selectedPlaylistTracks[$trackId] = $trackId;
+            }
+
+            $tracksCount = \count($selectedPlaylistTracks);
+
+            // Split playlist in two tracks lists
+            $tracksList1 = pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
+            $tracksList2 = pickRandomTracksFromArray($selectedPlaylistTracks, max(intval($count / 5), intval($tracksCount / 5)));
+
+            // Directly pick first part of this playlist
+            foreach ($tracksList1 as $trackId) {
+                $trackIds[$trackId] = $trackId;
+            }
+
+            // Get recommandations for other part
+            $chunks = array_chunk($tracksList2, 5);
+            foreach($chunks as $chunk) {
+                $recommendations = $api->getRecommendations([
+                    'seed_tracks' => $chunk,
+                    'limit' => \count($chunk)
+                ]);
+                foreach ($recommendations->tracks as $recommendedTrack) {
+                    $trackIds[$recommendedTrack->id] = $recommendedTrack;
+                }
+            }
+        }
+    }
+
+    $pickedTrackIds = pickRandomTracksFromArray($trackIds, $count);
+
+    $playlist = createEmptyPlaylist($api, 'Tambouille Mix');
+    $api->replacePlaylistTracks($playlist->id, $pickedTrackIds);
+
+    return $api->getPlaylist($playlist->id);
+}
+
 function getCreatedPlaylistInformationMessage($api, $playlist)
 {
     $link = '<a href="'.generateShowPlaylistUrl($playlist->id).'">'.$playlist->name.'</a>';
diff --git a/template.php b/template.php
index 9a6948ce1db2a730b4f322bfc30a2f1fa8dcf972..7d30e6484565028a35fe29618456ff6272a25010 100644
--- a/template.php
+++ b/template.php
@@ -78,7 +78,8 @@
           </div>
           <div class="col-md-4 col-sm-12">
             <div class="btn-group float-end" role="group" aria-label="Action buttons">
-              <button name="generate-quick-playlist-from-daily-mixes" type="submit" class="btn btn-primary">🎶 Mix daily mixes!</button>
+              <button name="generate-quick-playlist-from-daily-mixes" type="submit" class="btn btn-secondary">🎶 Mix daily mixes!</button>
+              <button name="generate-quick-playlist-tambouille-mix" type="submit" class="btn btn-primary">🎶 Pick nice tracks!</button>
             </div>
           </div>
         </div>