Ein in Rust geschriebener Spotify-Client für das Terminal.
Das Terminal in der Demo oben verwendet das Rigel-Thema.
Spotify TUI
Homebrew
Schnapp
AUR
Nix
Leeres Linux
Fedora/CentOS
Ladung
Windows
Handbuch
Hinweis zu Linux
Scoop-Installationsprogramm
Installation
Verbindung zur Spotify-API herstellen
Verwendung
Konfiguration
Hohe Anforderungen müssen noch umgesetzt werden
Windows-Subsystem für Linux
Einschränkungen
Verwendung mit Spotifyd
Verwendete Bibliotheken
Entwicklung
Mitwirkende
Roadmap
Die ausführbare Binärdatei ist spt
.
Sowohl für macOS als auch für Linux
brew installiere Spotify-TUI
Zum Aktualisieren ausführen
Brew Upgrade Spotify-TUI
Führen Sie für ein System, auf dem Snap installiert ist, Folgendes aus:
snap install spt
Die stabile Version wird automatisch für Sie installiert.
Wenn Sie den Nightly Build installieren möchten, führen Sie ihn aus
snap install spt --edge
Für Benutzer von Arch Linux finden Sie das Paket auf AUR hier. Wenn Sie jedoch einen AUR-Helfer verwenden, können Sie die Installation direkt von diesem ausführen, z. B. (im Fall von yay), ausführen
Juhu -S spotify-tui
Erhältlich als Paket spotify-tui
. Um zu installieren, führen Sie Folgendes aus:
nix-env -iA nixpkgs.spotify-tui
Dabei ist nixpkgs
der Kanalname in Ihrer Konfiguration. Für eine aktuellere Installation verwenden Sie den instabilen Kanal. Es ist auch möglich, das Paket zu environment.systemPackages
(für NixOS) oder home.packages
hinzuzufügen, wenn der Home-Manager verwendet wird.
Verfügbar in den offiziellen Repositories. Zum Installieren ausführen
sudo xbps-install -Su spotify-tui
Verfügbar in den Copr-Repositorys. Zum Installieren ausführen
sudo dnf copr enable atim/spotify-tui -y && sudo dnf install spotify-tui
Verwenden Sie diese Option, wenn Ihre Architektur nicht von den vorgefertigten Binärdateien auf der Release-Seite unterstützt wird.
Installieren Sie zuerst Rust (mit der empfohlenen rustup
Installationsmethode) und dann
Ladung Spotify-TUI installieren
Diese Methode erstellt die Binärdatei aus der Quelle.
Führen Sie zum Aktualisieren denselben Befehl erneut aus.
Für die Kompilierung unter Linux sind die Entwicklungspakete für libssl
erforderlich. Grundlegende Installationsanweisungen finden Sie unter OpenSSL installieren. Um Abhängigkeiten zu finden, erfordert die Kompilierung außerdem die Installation pkg-config
.
Wenn Sie das Windows-Subsystem für Linux verwenden, müssen Sie zusätzliche Abhängigkeiten installieren.
Stellen Sie zunächst sicher, dass sich das Scoop-Installationsprogramm auf Ihrem Windows-Rechner befindet. Eine Anleitung finden Sie unter scoop.sh
Öffnen Sie dann Powershell und führen Sie die folgenden zwei Befehle aus:
Scoop-Bucket Scoop-Bucket hinzufügen https://github.com/Rigellute/scoop-bucket Scoop installiere Spotify-TUI
Danach ist das Programm verfügbar als: spt
oder spt.exe
Laden Sie die neueste Binärdatei für Ihr Betriebssystem herunter.
cd
in die gerade heruntergeladene Datei kopieren und entpacken
cd
zu spotify-tui
und mit ./spt
ausführen
spotify-tui
muss eine Verbindung zur Spotify-API herstellen, um Musik nach Namen zu finden, Titel abzuspielen usw.
Anweisungen zum Einrichten werden angezeigt, wenn Sie die App zum ersten Mal ausführen.
Aber hier sind sie noch einmal:
Gehen Sie zum Spotify-Dashboard
Klicken Sie auf Create an app
Sie können jetzt Ihre Client ID
und Client Secret
sehen
Klicken Sie nun auf Edit Settings
Fügen Sie http://localhost:8888/callback
zu den Umleitungs-URIs hinzu
Scrollen Sie nach unten und klicken Sie auf Save
Sie können sich jetzt bei Spotify authentifizieren!
Gehen Sie zurück zum Terminal
Führen Sie spt
aus
Geben Sie Ihre Client ID
ein
Geben Sie Ihr Client Secret
ein
Drücken Sie die Eingabetaste, um den Standardport (8888) zu bestätigen, oder geben Sie einen benutzerdefinierten Port ein
Sie werden auf eine offizielle Spotify-Webseite weitergeleitet, auf der Sie um Berechtigungen gebeten werden.
Nachdem Sie die Berechtigungen akzeptiert haben, werden Sie zu localhost weitergeleitet. Wenn alles gut geht, wird die Weiterleitungs-URL automatisch analysiert und Sie sind fertig. Wenn der lokale Webserver aus irgendeinem Grund ausfällt, werden Sie auf eine leere Webseite weitergeleitet, auf der möglicherweise etwas wie „Verbindung abgelehnt“ steht, da kein Server ausgeführt wird. Kopieren Sie auf jeden Fall die URL und fügen Sie sie in die Eingabeaufforderung im Terminal ein.
Und jetzt sind Sie bereit spotify-tui
zu verwenden?
Sie können die Konfiguration jederzeit unter ${HOME}/.config/spotify-tui/client.yml
bearbeiten. (für snap ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
Die Binärdatei heißt spt
.
Wenn Sie spt
ohne Argumente ausführen, wird die Benutzeroberfläche angezeigt. Drücken Sie ?
, um ein Hilfemenü aufzurufen, das aktuell implementierte Schlüsselereignisse und ihre Aktionen anzeigt. Es gibt auch eine CLI, die die meisten Aufgaben der Benutzeroberfläche erledigen kann. Verwenden Sie spt --help
um mehr zu erfahren.
Hier sind einige Beispiele, die Sie begeistern werden.
spt --completions zsh # Prints shell completions for zsh to stdout (bash, power-shell and more are supported) spt play --name "Your Playlist" --playlist --random # Plays a random song from "Your Playlist" spt play --name "A cool song" --track # Plays 'A cool song' spt playback --like --shuffle # Likes the current song and toggles shuffle mode spt playback --toggle # Plays/pauses the current playback spt list --liked --limit 50 # See your liked songs (50 is the max limit) # Looks for 'An even cooler song' and gives you the '{name} from {album}' of up to 30 matches spt search "An even cooler song" --tracks --format "%t from %b" --limit 30
Eine Konfigurationsdatei befindet sich unter ${HOME}/.config/spotify-tui/config.yml
, für Snap ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(nicht zu verwechseln). mit client.yml, das die Spotify-Authentifizierung übernimmt)
Das Folgende ist eine Beispieldatei config.yml:
# Beispielkonfigurationsdatei# Die Designfarben können eine RGB-Zeichenfolge der Form „255, 255, 255“ oder eine Zeichenfolge sein, die auf die Farben Ihres Terminaldesigns verweist: Zurücksetzen, Schwarz, Rot, Grün, Gelb, Blau, Magenta, Cyan , Grau, DunkelGrau, HellRot, HellGrün, HellGelb, HellBlau, HellMagenta, HellCyan, Weiß. Thema: aktiv: Cyan # aktuell wiedergegebenes Lied in der Liste Banner: LightCyan # das „spotify-tui“-Banner beim Start error_border: Roter # Fehlerdialograhmen error_text: LightRed # Fehlermeldungstext (z. B. „Spotify API hat Fehler 404 gemeldet“) Hinweis: Gelber #-Hinweistext in Fehlern schwebend: Magenta # schwebender Fensterrand inaktiv: Graue # Ränder inaktiver Bereiche playbar_background: Schwarzer # Hintergrund des Fortschrittsbalkens playbar_progress: LightCyan # füllt einen Teil des Fortschrittsbalkens aus playbar_progress_text: Cyan # Songlänge und gespielte Zeit/verbleibende Anzeige im Fortschrittsbalken playbar_text: Weißer Künstlername im Player-Bereich Ausgewählt: LightCyan # a) ausgewählter Bereichsrand, b) schwebendes Element in der Liste und c) Titeltitel im Player Text: „255, 255, 255“ # Text in Fenstern Kopfzeile: Weißer # Kopfzeilentext in Bereichen (z. B. „Titel“, „Künstler“ usw.) Verhalten: Seek_Millisekunden: 5000 volume_increment: 10 # Je niedriger die Zahl, desto höher sind die „Bilder pro Sekunde“. Sie können diese Zahl verringern, damit die Audiovisualisierung flüssiger wird, aber das kann teuer sein! tick_rate_milliseconds: 250 # Texthervorhebung aktivieren (normalerweise kursiver/fetter Textstil). Das Deaktivieren dieser Option kann wichtig sein, wenn die Terminalkonfiguration anderweitig eingeschränkt ist und die Darstellung von Text-Escapezeichen die Benutzeroberfläche beeinträchtigt. enable_text_emphasis: wahr # Steuert, ob bei der Kommunikation mit der Spotify-API oben rechts in der Benutzeroberfläche eine Ladeanzeige angezeigt wird show_loading_indicator: wahr # Deaktiviert das responsive Layout, das die Suchleiste kleiner und größer macht # überprüft und erzwingt eine breite Suchleiste Enforce_wide_search_bar: false # Legt das Textsymbol fest, das neben „gefällt mir“-Spotify-Elementen angezeigt werden soll, z. B # Songs und Alben mit „Gefällt mir“ markiert oder Künstlern gefolgt. Kann eine Zeichenfolge beliebiger Länge sein. # Für diese Symbole ist eine gepatchte Nerd-Schriftart erforderlich. like_icon: ♥ shuffle_icon: ? repeat_track_icon: ? rep_context_icon: ? playing_icon: ▶ paused_icon: ⏸ # Setzt den Fenstertitel per ANSI-Escape-Code auf „spt – Spotify TUI“. set_window_title: truekeybindings: # Tastendruck kann verwendet werden, wenn nur zwei Tasten verwendet werden: # Strg-Q funktioniert, # Strg-Alt-Q funktioniert nicht. zurück: „Strg-Q“ jump_to_album: „a“ # Umschaltmodifikatoren verwenden einen Großbuchstaben (gilt auch für andere Modifikatortasten). # wie Strg-A) jump_to_artist_album: „A“ manage_devices: „d“ verringertes_Volumen: „-“ raise_volume: „+“ toggle_playback: " " search_backwards: „<“ search_forwards: „>“ next_track: „n“ previous_track: „p“ copy_song_url: „c“ copy_album_url: „C“ helfen: "?" Mischen: „Strg-S“ wiederholen: „r“ suchen: "/" audio_analysis: „v“ jump_to_context: „o“ basic_view: „B“ add_item_to_queue: „z“
Diese App nutzt die Web-API von Spotify, die das Streaming selbst nicht übernimmt. Sie benötigen also entweder einen offiziellen Spotify-Client oder eine leichtere Alternative wie spotifyd.
Wenn Sie Titel abspielen möchten, erfordert Spotify, dass Sie über einen Premium-Account verfügen.
Befolgen Sie zur Einrichtung die Spotify-Dokumentation.
Danach ist nicht mehr viel dran.
Starten Sie den Spotifyd-Daemon.
Starten Sie spt
Drücken Sie d
, um zum Geräteauswahlmenü zu gelangen. Dort sollte das „Spotifyd-Gerät“ angezeigt werden. Wenn nicht, überprüfen Sie diese Dokumente
tui-rs
rspotify
Installieren Sie OpenSSL
Rust installieren
Installieren Sie xorg-dev
(erforderlich für die Unterstützung der Zwischenablage).
Klonen oder teilen Sie dieses Repo und cd
darauf
Und dann cargo run
Möglicherweise erhalten Sie einen Verknüpfungsfehler. In diesem Fall müssen Sie wahrscheinlich zusätzliche Abhängigkeiten installieren, die für das Clipboard-Paket erforderlich sind
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
Der Dank geht an diese wunderbaren Menschen (Emoji-Taste):
Alexander Keliris ? ? ? ? ? ? | Mickael Marques ? | Grzegorz Koperwas | Austin Gassert | Calen Robinette | M*C*O ? | Andrew Chin |
Sam Naser | Micha | neriglissar | Timon | echoSayonara | D-Schön ? | Grzegorz Pawlik |
Lennart Bernhardt | Arnaud Lefebvre | tem1029 | Peter K. Moss | Geoff Shannon | Zachary Mayhew | jfaltis |
Marcel Schramm | Fangyi Zhou | Max | Sven van der Vlist | jacobchrismarsh | Nils Rauch | Nick Stockton ? ? |
Stuart Hinson | Sam Calvert | Jeroen Wijenbergh | Kimberley Cook | Audrey Baxter | normannisch | Peter Maatman |
AlexandreS | Finn Vos | Carlos Hernandez ? | Pedro Alves | jtagcat | Benjamin Kitor | Aleš Najmann ? |
Jeremy Stucki | (´⌣`ʃƪ) | Artem Polishchuk ? | Chris Sosnin | Ben Buhse | Sean Li | TimotheeGerber |
Ferdinand Ratajczak | Sheel Choksi | Michael Hellwig | Oliver Daniel | Drew Fisher | ncoder-1 | Macguire Rintoul |
Ricardo Holguin | Keisuke Toyota | Craig Astill | Onielfa | usrme | Sergey A. | Hideyuki Okada |
Kepae | Érico Nogueira Rolim | Alexander Meinhardt Scheurer | Ondřej Kinšt | Kryan90 | N-Iwanow | bi1yeu |
Mai | Bruno A. Muciño | Finn Hediger | dp304 | Marco Micera | Marco Ieni ? | Artúr Kovács |
Antony Kellermann | Rasmus Pedersen | noir-Z | David Bailey | Schafmauer | Was war das? | Jesse |
Gesungen | Yuuki Takahashi | Alejandro Angulo | Anton Kostin | Justin Sexton | Jiati Le | Matthew Cobbing |
Milo ? | Diego Veralli | Maja Bojarska |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art willkommen!
Ziel ist es, irgendwann fast alle Spotify-Funktionen zu implementieren.
Fügen Sie Lieder zu einer Wiedergabeliste hinzu
Sie können in jeder Ansicht durch die Ergebnisseiten scrollen
Diese Tabelle zeigt, was mit der Spotify-API möglich ist, was bereits implementiert ist und ob dies unbedingt erforderlich ist.
API-Methode | Schon umgesetzt? | Erläuterung | Essentiell? |
---|---|---|---|
Schiene | NEIN | gibt einen einzelnen Track zurück, wenn die ID, der URI oder die URL des Tracks angegeben sind | NEIN |
Spuren | NEIN | gibt eine Liste von Titeln zurück, wenn eine Liste von Titel-IDs, URIs oder URLs vorhanden ist | NEIN |
Künstler | NEIN | gibt einen einzelnen Künstler mit der ID, dem URI oder der URL des Künstlers zurück | Ja |
Künstler | NEIN | gibt eine Liste von Künstlern mit den Künstler-IDs, URIs oder URLs zurück | NEIN |
artist_albums | Ja | Rufen Sie Spotify-Kataloginformationen zu den Alben eines Künstlers ab | Ja |
artist_top_tracks | Ja | Erhalten Sie Spotify-Kataloginformationen zu den Top-10-Titeln eines Künstlers nach Land. | Ja |
artist_lated_artists | Ja | Erhalten Sie Spotify-Kataloginformationen zu Künstlern, die einem identifizierten Künstler ähneln. Die Ähnlichkeit basiert auf der Analyse des Hörverlaufs der Spotify-Community. | Ja |
Album | Ja | gibt ein einzelnes Album mit der ID, den URIs oder der URL des Albums zurück | Ja |
Alben | NEIN | gibt eine Liste von Alben mit den Album-IDs, URIs oder URLs zurück | NEIN |
suchalbum | Ja | Durchsuchen Sie das Album basierend auf der Abfrage | Ja |
search_artist | Ja | Suchen Sie den Künstler basierend auf der Suchanfrage | Ja |
search_track | Ja | Suchspur basierend auf der Abfrage | Ja |
search_playlist | Ja | Durchsuchen Sie die Wiedergabeliste basierend auf der Abfrage | Ja |
album_track | Ja | Rufen Sie Spotify-Kataloginformationen zu den Titeln eines Albums ab | Ja |
Benutzer | NEIN | Ruft grundlegende Profilinformationen über einen Spotify-Benutzer ab | NEIN |
Wiedergabeliste | Ja | Erfahren Sie alle Details zur Spotify-Playlist | Ja |
aktuelle_Benutzer_Wiedergabelisten | Ja | Erhalten Sie aktuelle Benutzer-Playlists, ohne dass Sie sein Profil abrufen müssen | Ja |
user_playlists | NEIN | Ruft Wiedergabelisten eines Benutzers ab | NEIN |
user_playlist | NEIN | Ruft die Playlist eines Benutzers ab | NEIN |
user_playlist_tracks | Ja | Erhalten Sie vollständige Details zu den Titeln einer Playlist, die einem Benutzer gehört | Ja |
user_playlist_create | NEIN | Erstellt eine Playlist für einen Benutzer | Ja |
user_playlist_change_detail | NEIN | Ändert den Namen und/oder den öffentlichen/privaten Status einer Wiedergabeliste | Ja |
user_playlist_unfollow | Ja | Entfolgt (löscht) eine Playlist für einen Benutzer | Ja |
user_playlist_add_track | NEIN | Fügt Titel zu einer Wiedergabeliste hinzu | Ja |
user_playlist_replace_track | NEIN | Ersetzen Sie alle Titel in einer Wiedergabeliste | NEIN |
user_playlist_recorder_tracks | NEIN | Ordnen Sie Titel in einer Wiedergabeliste neu an | NEIN |
user_playlist_remove_all_occurrences_of_track | NEIN | Entfernt alle Vorkommen der angegebenen Titel aus der angegebenen Wiedergabeliste | NEIN |
user_playlist_remove_special_occurrenes_of_track | NEIN | Entfernt alle Vorkommen der angegebenen Titel aus der angegebenen Wiedergabeliste | NEIN |
user_playlist_follow_playlist | Ja | Fügen Sie den aktuell authentifizierten Benutzer als Follower einer Playlist hinzu. | Ja |
user_playlist_check_follow | NEIN | Überprüfen Sie, ob die angegebenen Benutzer der angegebenen Playlist folgen | Ja |
Mich | NEIN | Erhalten Sie detaillierte Profilinformationen über den aktuellen Benutzer. | Ja |
aktueller_Benutzer | NEIN | Alias für me | Ja |
current_user_playing_track | Ja | Erhalten Sie Informationen über die aktuellen Benutzer, die gerade den Titel abspielen. | Ja |
aktuelle_benutzer_gespeicherte_alben | Ja | Ruft eine Liste der Alben ab, die in der Bibliothek „Ihre Musik“ des aktuell autorisierten Benutzers gespeichert sind | Ja |
aktuelle_benutzer_gespeicherte_tracks | Ja | Ruft die gespeicherten Titel oder „Likes“ des Benutzers ab. | Ja |
current_user_followed_artists | Ja | Ruft eine Liste der Künstler ab, gefolgt vom aktuellen autorisierten Benutzer | Ja |
current_user_saved_tracks_delete | Ja | Entfernen Sie einen oder mehrere Titel aus der „Ihre Musik“-Bibliothek des aktuellen Benutzers. | Ja |
current_user_saved_tracks_contain | NEIN | Überprüfen Sie, ob ein oder mehrere Titel bereits in der „Ihre Musik“-Bibliothek des aktuellen Spotify-Benutzers gespeichert sind. | Ja |
current_user_saved_tracks_add | Ja | Speichern Sie einen oder mehrere Titel in der „Ihre Musik“-Bibliothek des aktuellen Benutzers. | Ja |
current_user_top_artists | NEIN | Holen Sie sich die Top-Künstler des aktuellen Benutzers | Ja |
current_user_top_tracks | NEIN | Holen Sie sich die Top-Titel des aktuellen Benutzers | Ja |
current_user_recently_played | Ja | Rufen Sie die zuletzt gespielten Titel des aktuellen Benutzers ab | Ja |
current_user_saved_albums_add | Ja | Fügen Sie ein oder mehrere Alben zur „Ihre Musik“-Bibliothek des aktuellen Benutzers hinzu. | Ja |
current_user_saved_albums_delete | Ja | Entfernen Sie ein oder mehrere Alben aus der „Ihre Musik“-Bibliothek des aktuellen Benutzers. | Ja |
user_follow_artists | Ja | Folgen Sie einem oder mehreren Künstlern | Ja |
user_unfollow_artists | Ja | Folgen Sie einem oder mehreren Künstlern nicht mehr | Ja |
user_follow_users | NEIN | Folgen Sie einem oder mehreren Benutzern | NEIN |
user_unfollow_users | NEIN | Folgen Sie einem oder mehreren Benutzern nicht mehr | NEIN |
Featured_Playlists | NEIN | Holen Sie sich eine Liste der von Spotify empfohlenen Playlists | Ja |
neue_Veröffentlichungen | NEIN | Holen Sie sich eine Liste der neuen Albumveröffentlichungen, die in Spotify vorgestellt werden | Ja |
Kategorien | NEIN | Rufen Sie eine Liste der Kategorien ab, die zum Markieren von Elementen in Spotify verwendet werden | Ja |
Empfehlungen | Ja | Erhalten Sie Empfehlungen basierend auf Samen | Ja |
audio_features | NEIN | Erhalten Sie Audiofunktionen für einen Titel | NEIN |
audios_features | NEIN | Erhalten Sie Audiofunktionen für mehrere Titel | NEIN |
audio_analyse | Ja | Erhalten Sie eine Audioanalyse für einen Track | Ja |
Gerät | Ja | Rufen Sie die verfügbaren Geräte eines Benutzers ab | Ja |
aktuelle_Wiedergabe | Ja | Erhalten Sie Informationen über die aktuelle Wiedergabe des Benutzers | Ja |
current_playing | NEIN | Rufen Sie den aktuell wiedergegebenen Titel des Benutzers ab | NEIN |
transfer_playback | Ja | Übertragen Sie die Wiedergabe eines Benutzers | Ja |
start_playback | Ja | Starten/Fortsetzen der Wiedergabe eines Benutzers | Ja |
pause_playback | Ja | Unterbrechen Sie die Wiedergabe eines Benutzers | Ja |
next_track | Ja | Überspringen Sie die Wiedergabe des Benutzers zum nächsten Titel | Ja |
previous_track | Ja | Überspringen Sie die Wiedergabe des Benutzers zum vorherigen Titel | Ja |
see_track | Ja | Suchen Sie nach einer Position im aktuell wiedergegebenen Titel | Ja |
wiederholen | Ja | Legen Sie den Wiederholungsmodus für die Wiedergabe des Benutzers fest | Ja |
Volumen | Ja | Stellen Sie die Lautstärke für die Wiedergabe des Benutzers ein | Ja |
Shuffle | Ja | Umschalten der Zufallswiedergabe für die Benutzerwiedergabe | Ja |