Spotify unter Ubuntu im Terminal nutzen

Spotify bietet bereits einen offiziellen Client für Linux an, der auch problemlos unter aktuellen Ubuntu Versionen läuft. Allerdings ist dieser relativ ressourcenhungrig. Wer die Bedienung über das Terminal nicht scheut, dem stehen mit Spotify TUI im Zusammenspiel mit spotifyd eine leichtgewichtige, in Rust geschriebene, alternative zur Verfügung.

Spotifyd übernimmt dabei die eigentliche Wiedergabe der Songs, während Spotify TUI die Benutzeroberfläche liefert mit der ihr Songs sucht, Playlisten abspielt usw.

Beachte das sich beide Anwendungen noch in aktiver Entwicklung befinden und den stabilen Status 1.0 noch nicht erreicht haben. Es kann deshalb gelegentlich noch zu abstürzen kommen und es können hier und da noch einige Feauteres fehlen. So ist es derzeit noch nicht möglich Songs zu Wiedergabelisten hinzuzufügen. Es besteht aber die Möglichkeit Songs zu liken und sie so später wiederzufinden. Beide Projekte werden aber stetig weiterentwickelt. Du benötigst darüber hinaus einen Spotify Premium Account.

Spotifyd installieren

Spotifyd übernimmt das eigentliche Streamen der Musik und ist Voraussetzung um später Musik allein über das Terminal streamen zu können.

  1. Spotifyd herunterladen/ installieren:
    Lade die aktuelle Version von spotifyd als Binary von der Github Seite des Projekts herunter. Hier findest du die neusten Releases in verschiedene Versionen mit unterschiedlichen Features. Um spotifyd mit Pulseaudio (der Standard Soundserver unter Ubuntu) zu nutzen, worauf sich auch die nachfolgenden Erläuterungen beziehen, empfehle ich die Version “spotifyd-linux-full.tar.gz” mit allen Features herunterzuladen und entpacke das Archiv.
    In der zum Zeitpunkt des Artikels aktuellen Version v0.2.24 kam es unter Ubuntu 20.04 und 20.10 noch zu einem Bug, der sich bei mir nur durch eine kleine Anpassung an einer Konfigurationsdatei und das selbst kompilieren des Quellcodes lösen ließ. Da die Binaries aber auch schon eine Weile nicht mehr aktualisiert wurden und sich seitdem auch die Syntax der Konfigurationsdatei etwas verändert hat, ist das selbst kompilieren auch durchaus sinnvoll.
    Hier ist eine Schritt für Schritt Anleitung:

    1. Wenn git noch nicht auf deiner Ubuntu Installation installiert ist musst du das nachholen:
      sudo apt install git
    2. Klone das Repository über das Terminal mit
      git clone https://github.com/Spotifyd/spotifyd.git
    3. Wechsel in das heruntergeladene Repository mit
      cd spotifyd
    4. Öffne ‘Cargo.toml’ mit einem Editor, z.b. gedit:
      gedit Cargo.toml
    5. Suche nach der Zeile
      default = ["alsa_backend"]
      und ändere diese zu
      default = ["pulseaudio_backend"]
      Speiechere die Änderung und schließe die Datei.
    6. Installiere cargo und weitere nötige Pakete die zum kompilieren benötigt werden
      sudo apt install cargo libasound2-dev libssl-dev libpulse-dev libdbus-1-dev
    7. Kompiliere spotifyd mit
      cargo build --release --features "pulseaudio_backend"
      Das kompilieren kann jetzt einige Zeit dauern. Bei mir hat es ca 30 Minuten gedauert.
      Das war es schon, du hast spotifyd nun selbst kompiliert ;)
  2. Von überall aus ausführbar machen:
    Um spotifyd von überall starten zu können, ist es sinnvoll, das Programm in den Binary Ordner deines Systems zu kopieren. Dafür benötigst du Superuser Rechte und kann vom entpackten Ordner aus mit folgendem Befehl gemacht werden:
    sudo cp spotifyd /usr/local/bin
    Nun kannst du spotifyd im Terminal von überall aus mit dem Befehl spotifyd starten.

  3. Konfiguration:
    Nun müssen wir spotifyd noch konfigurieren. Dazu legen wir den Konfigurationsordner neu an:
    mkdir -p ~/.config/spotifyd/
    und erstellen als Nächstes die Konfigurationsdatei mit
    touch ~/.config/spotifyd/spotifyd.conf
    Die neu angelegte Datei kannst du nun mit einem beliebigen Editor öffnen. Da die Datei noch leer ist kopierst du dir am besten die Beispielkonfigurationsdatei von der Projektseite oder benutzt die von mir vorkonfigurierte Datei:

[global]
# Your Spotify account name.
username = ""

# Your Spotify account password.
password = ""

# A command that gets executed and can be used to
# retrieve your password.
# The command should return the password on stdout.
#
# This is an alternative to the `password` field. Both
# can't be used simultaneously.
# password_cmd = "command_that_writes_password_to_stdout"

# If set to true, `spotifyd` tries to look up your
# password in the system's password storage.
#
# This is an alternative to the `password` field. Both
# can't be used simultaneously.
use_keyring = false

# The audio backend used to play the your music. To get
# a list of possible backends, run `spotifyd --help`.
backend = "pulseaudio"

# The alsa audio device to stream audio to. To get a
# list of valid devices, run `aplay -L`,
# device = "alsa_audio_device"  # omit for macOS

# The alsa control device. By default this is the same
# name as the `device` field.
# control = "alsa_audio_device"  # omit for macOS

# The alsa mixer used by `spotifyd`.
mixer = "PCM"

# The volume controller. Each one behaves different to
# volume increases. For possible values, run
# `spotifyd --help`.
# volume_controller = "alsa"  # use softvol for macOS

# A command that gets executed in your shell after each song changes.
# on_song_change_hook = "command_to_run_on_playback_events"

# The name that gets displayed under the connect tab on
# official clients. Spaces are not allowed!
device_name = "terminaldevice"

# The audio bitrate. 96, 160 or 320 kbit/s
bitrate = 320

# The directory used to cache audio data. This setting can save
# a lot of bandwidth when activated, as it will avoid re-downloading
# audio files when replaying them.
#
# Note: The file path does not get expanded. Environment variables and
# shell placeholders like $HOME or ~ don't work!
cache_path = "cache_directory"

# If set to true, audio data does NOT get cached.
no_audio_cache = true

# Volume on startup between 0 and 100
initial_volume = "90"

# If set to true, enables volume normalisation between songs.
volume_normalisation = true

# The normalisation pregain that is applied for each song.
normalisation_pregain = -10

# The port `spotifyd` uses to announce its service over the network.
# zeroconf_port = 1234

# The proxy `spotifyd` will use to connect to spotify.
# proxy = "http://proxy.example.org:8080"

# The displayed device type in Spotify clients.
# Can be unknown, computer, tablet, smartphone, speaker, tv,
# avr (Audio/Video Receiver), stb (Set-Top Box), and audiodongle.
device_type = "computer"

Du musst allerdings noch dein Spotify Passwort und Benutzername hinzufügen. Möchtest du dein Passwort nicht einfach in einer Datei speichern, ist auf der Projekt Seite ein Weg erklärt wie du dein Passwort stattdessen im Keyring speicherst.
Die obige Konfiguration ist bereits für Pulseaudio vorkonfiguriert. Unter “device_name” kannst du dem “Gerät” einen Namen geben, denn spotifyd verhält sich wie ein laufendes Spotify Gerät. Ähnlich Spotify auf deinem Smartphone als eigenes Gerät im Spotify Desktop Client erscheint. Beachte das der Name keine Leerzeichen enthalten darf. Weitere interessante Einstellungen:

  • bitrate: In welcher Qualität gestreamt wird (96, 160, 320)
  • no_audio_cache: Kann Bandbreite sparen wenn auf false gesetzt. Solltest du den Cache aktivieren musst du auch einen path unter ‘cache_path’ angeben. Dazu eignet sich z.B. “/home/DEIN NUTZER/.cache/spotifyd”. Den Ordner musst du dann auch wieder erst selbst erstellen:
    mkdir -p ~/.cache/spotifyd/
  • on_song_change_hook: Hier kannst du den Pfad zu einem eigenen Skript angeben, welches z.B. eine Benachrichtigung erstellt und dir anzeigt welcher Song gerade abgespielt wird.
  1. Testen ob alles funktioniert:
    Um zu schauen ob alles richtig eingerichtet ist, kannst du das Programm mit spotifyd --no-daemon --verbose starten. Durch das –verbose Flag werden etwaige Fehler direkt im Terminal ausgegeben.

Hat alles geklappt und es kam zu keinen Fehlern kannst du spotifyd zukünftig über die Kommandozeile über den Befehl spotifyd starten.
Das war es schon. Spotifyd ist nun bereit in Verbindung mit einem Client wie Spotify TUI oder deinem Smartphone Musik abzuspielen.

Weitere nützliche Befehle:

Hilfe: spotifyd --help
Version anzeigen: spotifyd -V
Nicht als Daemon starten: spotifyd --no-daemon
Mit Ausgabe starten: spotifyd --no-daemon --verbose
Daemon beenden: killall spotifyd

Spotify TUI installieren

Während spotifyd das streaming der Musik übernimmt und alleine erst einmal nicht sehr nützlich ist, liefert uns Spotify TUI das Interface um Musik zu suchen und aus Playlisten abzuspielen.

  1. Lade die aktuelle Version von Spotify TUI als Binary “spotify-tui-linux.tar.gz” von der Github Seite des Projekts herunter

  2. Entpacke das Archiv und wechsel in das neue Verzeichnis. Hier findest du das ausführbare Programm ‘spt’

  3. Kopiere die Executebale ‘spt’ in das Binary Verzeichnis deines Systems um Spotify TUI von überall mit dem Befehl spt starten zu können:
    sudo cp spt /usr/local/bin

  4. Nun benötigen wir eine Client ID und ein Client Secret damit Spotify TUI auf deinen Account zugreifen kann. Besuche dazu das Developer Portal von Spotify unter:
    https://developer.spotify.com/dashboard/applications
    Logge dich dort mit deinen Spotify Account ein und erstelle eine neue App (“CREATE AN APP” Button, rechts neben Dashboard). Den App Namen kannst du beliebig wählen, z.B. “Spotify TUI App”

  5. Du solltest nun deine CLIENT ID und mit einem Klick auf “SHOW CLIENT SECRET” auch dein Client Secret sehen, welche wir gleich noch brauchen werden.
    Spotify Dashboard

  6. Nun musst du noch eine Einstellung vornehmen. Klicke auf “EDIT SETTINGS” und trage dort folgendes ein, damit du später nach der Authentifizierung deines Accounts direkt wieder zu Spotify TUI weitergeleitet wirst:
    http://localhost:8888/callback
    Um die URL auch wirklich hinzuzufügen musst du noch auf die “ADD” Schaltfläche rechts neben dem Eingabe Feld klicken und danach alles mit “SAVE” speichern
    Edit App

  7. Führe nun im Terminal Spoitfy TUI mit dem Befehl spt aus

  8. Nun musst du den Anweisungen folgen und deine Client ID, dein Client Secret und den Standardport 8888 eingeben.
    Konfiguration
    Du wirst danach auf die Spotify Seite weitergeleitet auf der du Spotify TUI den Zugriff erlauben musst. Nach der Bestätigung solltest du wieder im Terminal landen.

  9. Spotify TUI ist jetzt einsatzbereit und kann mit spt im Terminal gestartet werden. Damit du Spotify TUI benutzen kannst musst du vorher aber noch spotifyd starten. Mit spotify TUI kannst du aber auch andere Geräte, wie dein Smartphone auf dem Spotify läuft, steuern. Das ist mit allen Geräten möglich die du auch über den offiziellen Spotify Client “fernsteuern” kannst.