Playlist-Shuffle mit Gedächtnis

Dein Shuffle wiederholt sich. Das muss er nicht.

Spotify zieht bei jedem Song neu aus dem Topf, statt den Topf einmal durchzugehen. Deshalb hörst du manche Lieblingssongs dreimal am Abend und andere monatelang nie. TruQueue mischt die Playlist einmal komplett durch und merkt sich über Sitzungen hinweg, wer schon dran war.

Fisher-Yates mit CSPRNG Fortschritt in SQLite übersteht Neustart und Skip Python · MIT

Demo 1 · gleiche Playlist, 40 Durchläufe

Zufall mit Zurücklegen gegen echten Zyklus

24 Songs, beide Seiten spielen 40 Stück. Links wird jedes Mal neu gewürfelt, rechts wird die Playlist einmal gemischt und abgearbeitet. Grün heißt einmal gespielt, rot heißt schon wieder, gestrichelt heißt noch offen. Die rechte Wand zeigt den jeweils laufenden Durchlauf, sie leert sich also bei jeder neuen Runde.

Zufall mit Zurücklegen wie üblich

bereit

0Wiederholungen
24nie gespielt
0häufigster Song

TruQueue-Zyklus gemischt, dann abgearbeitet

bereit

0Wiederholungen im Durchlauf
24im Durchlauf offen
1Durchlauf

Drück auf Abspielen. Beide Seiten bekommen dieselbe Playlist und dieselbe Anzahl Songs.

Warum das kein Pech ist, sondern Mathematik

Wer bei 24 Songs jedes Mal neu würfelt, zieht im Schnitt schon beim siebten Song eine Wiederholung. Das ist dasselbe Prinzip wie beim Geburtstagsparadoxon. Nach 24 Ziehungen sind im Mittel nur rund 15 verschiedene Songs gelaufen, ein gutes Drittel der Playlist bleibt stumm. Gleichzeitig läuft rein statistisch irgendein Song vier- oder fünfmal.

Spotify mischt nicht ganz so naiv, sondern gewichtet nach Geschmack und verteilt Künstler. Am Grundproblem ändert das nichts: Es gibt keine Garantie, dass jeder Song drankommt, bevor der erste wiederholt wird. Genau die Garantie gibt ein Zyklus.

Demo 2 · was bei Unterbrechungen passiert

Der Zyklus überlebt Skip, Abbruch und Neustart

Der Trick ist nicht das Mischen, das ist eine halbe Seite Code. Der Trick ist das Gedächtnis: Wer schon dran war, steht in einer Datenbank, nicht im Arbeitsspeicher.

Zwölf Songs, ein Durchlauf

Durchlauf 1 · 0 von 12 gehört

Demo 3 · Playlists aus dem Hörverhalten

Der Mix-Baukasten

Dieselbe Bewertungslogik wie im Programm, nur mit einer erfundenen Beispiel-Bibliothek aus 36 Songs. Dreh an den Reglern und sieh zu, wie sich die Trackliste ändert.

Länge 12 Songs
Energie 0.55
Anteil neu 20 %
Max. pro Künstler 2
Sprache
Genre-Familie

Was hier geschätzt wird, und was nicht

Spotify hat 2024 die Audio-Merkmale abgeschaltet, also gibt es keine gemessene Energie, kein Tempo, keine Stimmung mehr. Ein Sprachfeld gab es nie. Beides wird deshalb aus den Genre-Namen abgeleitet: ambient ist ruhig, hardstyle ist laut, german hip hop ist deutsch. Bei Schriftsystemen wie Kana oder Hangul ist die Sprache praktisch sicher, bei englischem gegen schwedischen Pop bleibt sie oft unbekannt.

  • ×
    Empfehlungen sind abgeschaltet. Neue Musik kommt über neue Alben bekannter Künstler und Genre-Suche, nicht über einen Empfehlungs-Endpunkt.
  • ×
    Fremde Playlists darf eine Hobby-App nicht mehr lesen, auch keine von Spotify erstellten.
  • ×
    Suche liefert höchstens zehn Treffer pro Anfrage, und das Beliebtheits-Feld ist weg.
  • Was bleibt: eigene Playlists, Likes, Top-Listen, zuletzt gespielt, Wiedergabesteuerung, Warteschlange. Genug für alles hier.

Loslegen

Auf dem eigenen Rechner oder als privater Webdienst

TruQueue läuft als Kommandozeilen-Programm auf deinem Rechner oder als kleiner Webdienst mit Oberfläche fürs Handy. Du brauchst Spotify Premium und eine eigene App im Developer-Dashboard, weil die API seit 2026 keine Hobby-Apps ohne Premium mehr bedient.

git clone https://github.com/DEIN-NAME/truqueue.git
cd truqueue
pip install -r requirements.txt
cp .env.example .env        # Client ID und Secret eintragen
python -m truqueue          # Playlist wählen, fertig

python -m truqueue mix --preset entdeckung   # Playlist aus dem Hörverhalten

Als Webdienst läuft es hinter einem Cloudflare Tunnel mit Access davor, ohne einen einzigen offenen Port. Die Anleitung dafür liegt im Repository unter DEPLOY.md.

Zum Code und zur Dokumentation →