Chris White - Dire Straits
Neulich habe ich ein Dire-Straits-Konzert besucht, gespielt von der Cover Band The Dire Straits Experience, da es die Originalband seit 1995 nicht mehr gibt. Aber immerhin ist der Bläser aus der ursprünglichen Besetzung, Chris White, bei der Experience dabei (siehe Titelbild). Obwohl die Tickets ziemlich teuer sind, kann ich einen Besuch empfehlen; die Halle tobte.
Am Tag nach dem Konzert wollte ich mir das Stück "Your latest trick" noch einmal mit dem Kopfhörer am PC anhören. Zwar habe ich das Lied in meiner Musiksammlung, aber – faul, wie ich bin – öffnete ich ein Terminal und tippte das hier ein:
play "dire straits your latest trick"
Dahinter versteckt sich dieser Alias:
play='_y(){ mpv --ytdl-format=bestaudio ytdl://ytsearch:"$*";}; _y'
Wer mehr darüber lesen möchte, findet die Details in diesem Artikel. Der Befehl verwendet den Player mpv und streamt das Musikstück nach einer Suche von YouTube. Doch leider bekam ich statt Musik auf die Ohren, eine Fehlermeldung auf die Augen. Den Grund dafür könnt ihr euch denken. Es liegt am ständigen Katz-und-Maus-Spiel zwischen YouTube (Google) und der Bibliothek ytdl. Diese Library ist ein YouTube-Downloader und Streamer für Video und Audio. Vermutlich funktioniert ytdl in ein paar Tagen wieder, wenn sich das Spielchen eine Runde weitergedreht hat.
Doch dann schoss mir ein Gedanke durch den Kopf: "Warum muss es YouTube sein?"
Spotify statt YouTube
Ich habe einen Spotify-Premium-Account, den ich mir mit der Familie teile. Statt im Terminal Musik von YouTube zu streamen, könnte man doch dasselbe Ziel über die Spotify-API erreichen. Der Idee folgten mehrere Stunden Suche im Internet, ohne, dass diese Suche das Gewünschte hervorbrachte. Ich erspare euch alle Anwendungen, die ich ausprobiert habe. Das beste Ergebnis meiner Suche war ncspot. Der Name dieser Anwendung ist schnell erklärt: "nc" steht für ncurses, eine freie C-Bibliothek für die Implementierung von TUIs (Terminal User Interface). Und "spot" steht für Spotify.
ncspot findet ihr höchstwahrscheinlich in der Paketverwaltung eurer Distribution. Aktuell ist die Version 1.3.1. So sieht die Anwendung im Terminal aus:
Der Screenshot zeigt, was ncspot vordergründig kann. Das Programm ist unzureichend dokumentiert; hier findet ihr weitere Hinweise zu den Fähigkeiten und zur Bedienung. Dummerweise gibt es in der Version 1.3.1 einen Fehler, der das Abspielen von Audio verunmöglicht. Das Problem liegt nicht bei ncspot, sondern bei der darunter liegenden Bibliothek librespot. Da der Fehler bereits behoben, aber noch nicht gemerged ist, dürft ihr in Kürze mit einer funktionierenden Version von ncspot rechnen.
Keine Lösung in Sicht
Mein Ziel ist es, einen Ersatz für "play [Song]" zu finden. Soweit ich es bisher einschätzen kann, bietet ncspot das nicht. Auch mit den anderen Kandidaten bin ich nicht klargekommen:
- spotify-player
- spotify-qt
- Spotify TUI
- Tizonia
- Visp
- zpotify
- Spotifatius
- spotifyd
- librespot
- spotipy
- spotDL
Ja, es ist ein wildes Sammelsurium. Die einen sind TUIs, manche sind Fernsteuerungen für einen laufenden Spotify-Client und andere sind Spotify-Connect Ziele oder Downloader. Und dann gibt es noch den freien Spotify-GUI-Client Psst, über den ich bereits geschrieben habe. Wer den ausprobieren möchte, kann die Datei psst-linux-x86_64 von hier herunterladen, ausführbar machen und starten. Dieser hübsche GUI-Client funktioniert zurzeit auch nicht; vermutlich ebenfalls wegen des Fehlers in librespot.
Dann soll es halt die KI erledigen
Aber Ralf, du Boomer. Frag doch einfach die KI. Habe ich gemacht:
Liebe KI. Generiere ein Linux Shell Script oder ein Python Script, welches die Suche und das Streamen eines Liedes über meinen Spotify-Account im Terminal implementiert.
Hinweis: das "Liebe KI" habe ich weggelassen :)
Proton-Lumo liefert eine umfangreiche Anleitung (könnt ihr selbst ausprobieren, falls es euch interessiert. Achtet bitte darauf, dass ihr die Web-Suche und den Ghost-Modus eingeschaltet habt.) Ich habe mir den generierten Code angesehen; er macht Sinn. Ausprobiert habe ich ihn nicht, weil Lumo auch Folgendes sagt:
Die offizielle Spotify‑Web‑API erlaubt kein direktes Streamen von Audiodaten, sondern nur die Steuerung von bereits autorisierten Geräten. Deshalb benötigen wir einen laufenden Spotify‑Player, den wir per API anweisen, den gefundenen Titel abzuspielen.
Damit ist die Sache witzlos. Wenn ich erst den langsamen und überentwickelten Electron-Client von Spotify starten muss, brauche ich kein "play [Song]" im Terminal.
Fazit
Ich weiss nicht, ob ncspot die Kastanien noch aus dem Feuer holen kann, nachdem der Fehler in librespot behoben ist. Meine Zweifel überwiegen, nachdem, was die KI geantwortet hat. Und dann frage ich mich, warum ich jeden Monat viel Geld an Spotify zahle, ohne deren API für meine Zwecke nutzen zu können (ihr wisst, was ich meine: Freiheit Nr. 0).
Jetzt zähle ich auf die Community. Schreibt bitte in die Kommentare, wie man bei Spotify-Premium im Terminal nach einem Song suchen, und ihn abspielen kann. Zur Not über einen Spotify-Downloader.
Bevor ich es vergesse: Wer "Sultans of Swing" nicht kennt, darf diesen Artikel nicht lesen 🎸
Titelbild: https://direstraitsexperience.com/artists/
https://flathub.org/en/apps/io.github.hrkfdn.ncspot
https://github.com/hrkfdn/ncspot
https://github.com/hrkfdn/ncspot/issues/1732
https://www.linuxlinks.com/ncspot-ncurses-spotify-client/
… und weitere im Text.

