Un client Spotify pour le terminal écrit en Rust.
Le terminal de la démo ci-dessus utilise le thème Rigel.
Interface utilisateur Spotify
Homebrew
Instantané
AUR
Rien
Vider Linux
Fedora/CentOS
Cargaison
Fenêtres
Manuel
Remarque sur Linux
Installateur Scoop
Installation
Connexion à l'API de Spotify
Usage
Configuration
Exigences de haut niveau non encore mises en œuvre
Sous-système Windows pour Linux
Limites
Utilisation avec Spotify
Bibliothèques utilisées
Développement
Contributeurs
Feuille de route
L'exécutable binaire est spt
.
Pour macOS et Linux
Brew installer Spotify-Tui
Pour mettre à jour, exécutez
mise à niveau de brassage Spotify-Tui
Pour un système sur lequel Snap est installé, exécutez
installation instantanée spt
La version stable sera installée automatiquement pour vous.
Si vous souhaitez installer la version nocturne, exécutez
installer instantanément spt --edge
Pour ceux qui utilisent Arch Linux, vous pouvez trouver le package sur AUR ici. Si toutefois vous utilisez un assistant AUR, vous pouvez l'installer directement à partir de celui-ci, par exemple (dans le cas de yay), exécutez
ouais -S spotify-tui
Disponible sous forme de package spotify-tui
. Pour installer, exécutez :
nix-env -iA nixpkgs.spotify-tui
Où nixpkgs
est le nom du canal dans votre configuration. Pour une installation plus à jour, utilisez le canal unstable. Il est également possible d'ajouter le package à environment.systemPackages
(pour NixOS) ou home.packages
lors de l'utilisation de home-manager.
Disponible sur les dépôts officiels. Pour installer, exécutez
sudo xbps-install -Su spotify-tui
Disponible sur les dépôts Copr. Pour installer, exécutez
sudo dnf copr activer atim/spotify-tui -y && sudo dnf install spotify-tui
Utilisez cette option si votre architecture n'est pas prise en charge par les binaires prédéfinis trouvés sur la page des versions.
Tout d’abord, installez Rust (en utilisant la méthode d’installation recommandée rustup
), puis
cargo installer spotify-tui
Cette méthode construira le binaire à partir des sources.
Pour mettre à jour, exécutez à nouveau la même commande.
Pour la compilation sous Linux, les packages de développement pour libssl
sont requis. Pour obtenir des instructions d’installation de base, consultez installer OpenSSL. Afin de localiser les dépendances, la compilation nécessite également l'installation pkg-config
.
Si vous utilisez le sous-système Windows pour Linux, vous devrez installer des dépendances supplémentaires.
Tout d'abord, assurez-vous que le programme d'installation de Scoop est sur votre boîte Windows. Pour obtenir des instructions, veuillez visiter scoop.sh.
Ensuite, ouvrez PowerShell et exécutez les deux commandes suivantes :
seau à cuillère ajouter un seau à cuillère https://github.com/Rigellute/scoop-bucket scoop installer Spotify-Tui
Après ce programme est disponible sous : spt
ou spt.exe
Téléchargez le dernier binaire pour votre système d'exploitation.
cd
sur le fichier que vous venez de télécharger et décompressez
cd
pour spotify-tui
et exécuté avec ./spt
spotify-tui
doit se connecter à l'API de Spotify pour rechercher de la musique par son nom, lire des pistes, etc.
Les instructions sur la façon de configurer cela s'afficheront lorsque vous exécuterez l'application pour la première fois.
Mais les voici à nouveau :
Accédez au tableau de bord Spotify
Cliquez sur Create an app
Vous pouvez maintenant voir votre Client ID
et Client Secret
Cliquez maintenant sur Edit Settings
Ajoutez http://localhost:8888/callback
aux URI de redirection
Faites défiler vers le bas et cliquez sur Save
Vous êtes maintenant prêt à vous authentifier auprès de Spotify !
Retournez au terminal
Exécuter spt
Entrez votre Client ID
Entrez votre Client Secret
Appuyez sur Entrée pour confirmer le port par défaut (8888) ou entrez un port personnalisé
Vous serez redirigé vers une page Web officielle de Spotify pour vous demander des autorisations.
Après avoir accepté les autorisations, vous serez redirigé vers localhost. Si tout se passe bien, l'URL de redirection sera analysée automatiquement et vous avez maintenant terminé. Si le serveur Web local tombe en panne pour une raison quelconque, vous serez redirigé vers une page Web vierge pouvant indiquer quelque chose comme « Connexion refusée » puisqu'aucun serveur n'est en cours d'exécution. Quoi qu'il en soit, copiez l'URL et collez-la dans l'invite du terminal.
Et maintenant vous êtes prêt à utiliser spotify-tui
?
Vous pouvez modifier la configuration à tout moment sur ${HOME}/.config/spotify-tui/client.yml
. (pour snap ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
Le binaire est nommé spt
.
L'exécution spt
sans argument fera apparaître l'interface utilisateur. Presse ?
pour afficher un menu d'aide qui affiche les événements clés actuellement implémentés et leurs actions. Il existe également une CLI capable d'effectuer la plupart des tâches de l'interface utilisateur. Utilisez spt --help
pour en savoir plus.
Voici quelques exemples pour vous enthousiasmer.
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
Un fichier de configuration se trouve dans ${HOME}/.config/spotify-tui/config.yml
, pour le snap ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(à ne pas confondre avec client.yml qui gère l'authentification Spotify)
Voici un exemple de fichier config.yml :
# Exemple de fichier de configuration# Les couleurs du thème peuvent être une chaîne RVB de la forme "255, 255, 255" ou une chaîne faisant référence aux couleurs du thème de votre terminal : Réinitialiser, Noir, Rouge, Vert, Jaune, Bleu, Magenta, Cyan , Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White.theme : actif : Cyan # chanson en cours de lecture dans la liste bannière : LightCyan # la bannière "spotify-tui" au lancement error_border : bordure rouge de la boîte de dialogue d'erreur # error_text : LightRed # texte du message d'erreur (par exemple "L'API Spotify a signalé l'erreur 404") indice : jaune # texte d'indice dans les erreurs survolé : Magenta # bordure du volet survolé inactif : # bordures grises des volets inactifs playbar_background : #fond noir de la barre de progression playbar_progress : LightCyan # partie remplie de la barre de progression playbar_progress_text : Cyan # durée et durée de la chanson jouée/indicateur gauche dans la barre de progression playbar_text : Nom de l'artiste blanc dans le volet du lecteur sélectionné : LightCyan # a) bordure du volet sélectionné, b) élément survolé dans la liste, & c) titre de la piste dans le lecteur texte : "255, 255, 255" # texte dans les volets en-tête : blanc # texte d'en-tête dans les volets (par exemple "Titre", "Artiste", etc.) comportement : seek_milliseconds : 5000 volume_increment : 10 # Plus le nombre est bas, plus les "images par seconde" sont élevées. Vous pouvez diminuer ce nombre pour que la visualisation audio soit plus fluide mais cela peut coûter cher ! tick_rate_milliseconds : 250 # Activer l'accentuation du texte (généralement le style de texte italique/gras). La désactivation de cette option peut être importante si la configuration du terminal est par ailleurs restreinte et que le rendu des échappements de texte interfère avec l'interface utilisateur. activate_text_emphasis : vrai # Contrôle s'il faut afficher un indicateur de chargement en haut à droite de l'interface utilisateur lors de la communication avec l'API Spotify show_loading_indicator : vrai # Désactive la mise en page réactive qui rend la barre de recherche plus petite et plus grande # écrans et applique une large barre de recherche force_wide_search_bar : faux # Détermine l'icône de texte à afficher à côté des éléments Spotify "aimés", tels que # j'ai aimé des chansons et des albums, ou j'ai suivi des artistes. Peut être une chaîne de n’importe quelle longueur. # Ces icônes nécessitent une police nerd corrigée. like_icon : ♥ shuffle_icon : ? repeat_track_icon : ? repeat_context_icon : ? icône_de_jeu : ▶ paused_icon : ⏸ # Définit le titre de la fenêtre sur "spt - Spotify TUI" via le code d'échappement ANSI. set_window_title : truekeybindings : # La frappe de touche peut être utilisée si elle n'utilise que deux touches : # ctrl-q fonctionne, # ctrl-alt-q ne le fait pas. retour : "ctrl-q" jump_to_album : "a" # Les modificateurs Shift utilisent une lettre majuscule (s'applique également avec d'autres touches de modification # comme ctrl-A) jump_to_artist_album : "A" gérer_appareils : "d" diminuer_volume : "-" augmenter_volume : "+" toggle_playback : " " seek_backwards : "<" seek_forwards : ">" piste_suivante : "n" piste_précédente : "p" copy_song_url : "c" copy_album_url : "C" aide: "?" lecture aléatoire : "ctrl-s" répéter: "r" recherche: "/" analyse_audio : "v" jump_to_context : "o" vue_de base : "B" add_item_to_queue : "z"
Cette application utilise l'API Web de Spotify, qui ne gère pas le streaming lui-même. Vous aurez donc besoin soit d'un client Spotify officiel ouvert, soit d'une alternative plus légère telle que Spotify.
Si vous souhaitez lire des morceaux, Spotify nécessite que vous disposiez d'un compte Premium.
Suivez la documentation Spotify pour vous installer.
Après, il n'y a plus grand chose à faire.
Commencez à exécuter le démon Spotify.
Démarrer spt
Appuyez sur d
pour accéder au menu de sélection de l'appareil et le "périphérique" spotify devrait être là - sinon, vérifiez ces documents
tui-rs
rspotify
Installer OpenSSL
Installer Rust
Installez xorg-dev
(requis pour la prise en charge du presse-papiers)
Clonez ou forkez ce dépôt et cd
y
Et puis cargo run
Vous pourriez obtenir une erreur de liaison. Si tel est le cas, vous devrez probablement installer des dépendances supplémentaires requises par le package clipboard
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
Merci à ces personnes merveilleuses (clé emoji) :
Alexandre Kéliris ? ? ? ? ? ? | Mickaël Marques ? | Grzegorz Koperwas | Austin Gassert | Calen Robinette | M*C*O ? | Andrew Chin |
Sam Nasser | Micha | nériglissar | Timon | échoSayonara | D-Joli ? | 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 Cuisinier | Audrey Baxter | normand | Peter Maatman |
AlexandreS | Finn Vos | Carlos Hernández ? | Pedro Alves | jtagcat | Benjamin Kitor | Aless Najmann ? |
Jérémie Stucki | (´⌣`ʃƪ) | Artem Polishchuk ? | Chris Sosnin | Ben Buhse | Sean Li | TimothéeGerber |
Ferdinand Ratajczak | Sheel Choksi | Michael Hellwig | Olivier Daniel | Drew Fisher | ncodeur-1 | Macguire Rintoul |
Ricardo Holguín | Keisuke Toyota | Craig Astill | Onielfa | usrme | Sergueï A. | Hideyuki Okada |
kepae | Érico Nogueira Rolim | Alexandre Meinhardt Scheurer | Ondrej Kinšt | Kryan90 | N-Ivanov | bi1yeu |
Peut | Bruno A. Muciño | Finn Hediger | dp304 | Marco Micéra | Marco Iéni ? | Artúr Kovacs |
Antoine Kellermann | Rasmus Pedersen | noir-Z | David Bailey | mur de moutons | Qu'est-ce que c'était que ça | Jessé |
A chanté | Yuuki Takahashi | Alexandre Angulo | Anton Kostine | Justin Sexton | Jiati Le | Matthieu Cobbing |
Milo ? | Diego Veralli | Maja Bojarska |
Ce projet suit la spécification de tous les contributeurs. Les contributions de toute nature sont les bienvenues !
L’objectif est d’implémenter à terme presque toutes les fonctionnalités de Spotify.
Ajouter des chansons à une liste de lecture
Être capable de faire défiler les pages de résultats dans chaque vue
Ce tableau montre tout ce qui est possible avec l'API Spotify, ce qui est déjà implémenté et si cela est essentiel.
Méthode API | Déjà mis en œuvre ? | Explication | Essentiel? |
---|---|---|---|
piste | Non | renvoie une seule piste en fonction de l'ID, de l'URI ou de l'URL de la piste | Non |
pistes | Non | renvoie une liste de pistes avec une liste d'ID de piste, d'URI ou d'URL | Non |
artiste | Non | renvoie un seul artiste en fonction de l'identifiant, de l'URI ou de l'URL de l'artiste | Oui |
artistes | Non | renvoie une liste d'artistes en fonction des identifiants d'artiste, des URI ou des URL | Non |
artiste_albums | Oui | Obtenir des informations du catalogue Spotify sur les albums d'un artiste | Oui |
artiste_top_tracks | Oui | Obtenez des informations du catalogue Spotify sur les 10 meilleurs titres d'un artiste par pays. | Oui |
artiste_lié_artistes | Oui | Obtenez des informations sur le catalogue Spotify sur des artistes similaires à un artiste identifié. La similarité est basée sur l'analyse de l'historique d'écoute de la communauté Spotify. | Oui |
album | Oui | renvoie un seul album en fonction de l'ID, des URI ou de l'URL de l'album | Oui |
albums | Non | renvoie une liste d'albums avec les identifiants d'album, les URI ou les URL | Non |
recherche_album | Oui | Rechercher un album en fonction d'une requête | Oui |
recherche_artiste | Oui | Rechercher un artiste en fonction d'une requête | Oui |
recherche_piste | Oui | Piste de recherche basée sur une requête | Oui |
liste de lecture_recherche | Oui | Rechercher une playlist en fonction d'une requête | Oui |
album_track | Oui | Obtenir des informations du catalogue Spotify sur les morceaux d'un album | Oui |
utilisateur | Non | Obtient des informations de profil de base sur un utilisateur Spotify | Non |
liste de lecture | Oui | Obtenez tous les détails sur la liste de lecture Spotify | Oui |
listes_de_play_user_actuelles | Oui | Obtenez les listes de lecture actuelles de l'utilisateur sans avoir besoin d'obtenir son profil | Oui |
listes_de_play_utilisateurs | Non | Obtient les listes de lecture d'un utilisateur | Non |
liste_play_utilisateur | Non | Obtient la liste de lecture d'un utilisateur | Non |
user_playlist_tracks | Oui | Obtenez tous les détails des pistes d'une playlist appartenant à un utilisateur | Oui |
user_playlist_create | Non | Crée une playlist pour un utilisateur | Oui |
user_playlist_change_detail | Non | Change le nom d'une playlist et/ou l'état public/privé | Oui |
user_playlist_unfollow | Oui | Ne plus suivre (supprimer) une playlist pour un utilisateur | Oui |
user_playlist_add_track | Non | Ajoute des pistes à une liste de lecture | Oui |
user_playlist_replace_track | Non | Remplacer toutes les pistes d'une playlist | Non |
user_playlist_recorder_tracks | Non | Réorganiser les pistes dans une liste de lecture | Non |
user_playlist_remove_all_occurrences_of_track | Non | Supprime toutes les occurrences des pistes données de la liste de lecture donnée | Non |
user_playlist_remove_special_occurrenes_of_track | Non | Supprime toutes les occurrences des pistes données de la liste de lecture donnée | Non |
user_playlist_follow_playlist | Oui | Ajoutez l'utilisateur authentifié actuel en tant que suiveur d'une liste de lecture. | Oui |
user_playlist_check_follow | Non | Vérifiez si les utilisateurs donnés suivent la playlist donnée | Oui |
moi | Non | Obtenez des informations de profil détaillées sur l’utilisateur actuel. | Oui |
utilisateur_actuel | Non | Alias pour me | Oui |
current_user_playing_track | Oui | Obtenez des informations sur les utilisateurs actuels qui écoutent actuellement la piste. | Oui |
albums_saved_user_actuels | Oui | Obtient une liste des albums enregistrés dans la bibliothèque « Votre musique » de l'utilisateur autorisé actuel | Oui |
current_user_saved_tracks | Oui | Obtient les pistes enregistrées de l'utilisateur ou les « chansons aimées » | Oui |
current_user_followed_artists | Oui | Obtient une liste des artistes suivis par l'utilisateur autorisé actuel | Oui |
current_user_saved_tracks_delete | Oui | Supprimez une ou plusieurs pistes de la bibliothèque « Votre musique » de l'utilisateur actuel. | Oui |
current_user_saved_tracks_contain | Non | Vérifiez si une ou plusieurs pistes sont déjà enregistrées dans la bibliothèque « Votre musique » de l'utilisateur Spotify actuel. | Oui |
current_user_saved_tracks_add | Oui | Enregistrez une ou plusieurs pistes dans la bibliothèque « Votre musique » de l'utilisateur actuel. | Oui |
current_user_top_artists | Non | Obtenez les meilleurs artistes de l'utilisateur actuel | Oui |
current_user_top_tracks | Non | Obtenez les meilleurs titres de l'utilisateur actuel | Oui |
current_user_recently_played | Oui | Obtenez les pistes récemment écoutées par l'utilisateur actuel | Oui |
current_user_saved_albums_add | Oui | Ajoutez un ou plusieurs albums à la bibliothèque « Votre musique » de l'utilisateur actuel. | Oui |
current_user_saved_albums_delete | Oui | Supprimez un ou plusieurs albums de la bibliothèque « Votre musique » de l'utilisateur actuel. | Oui |
user_follow_artists | Oui | Suivre un ou plusieurs artistes | Oui |
user_unfollow_artists | Oui | Ne plus suivre un ou plusieurs artistes | Oui |
user_follow_users | Non | Suivre un ou plusieurs utilisateurs | Non |
user_unfollow_users | Non | Ne plus suivre un ou plusieurs utilisateurs | Non |
playlists_en vedette | Non | Obtenez une liste des listes de lecture en vedette sur Spotify | Oui |
nouvelles_versions | Non | Obtenez une liste des nouvelles sorties d'albums présentées sur Spotify | Oui |
catégories | Non | Obtenez une liste des catégories utilisées pour baliser les éléments dans Spotify | Oui |
recommandations | Oui | Obtenez des recommandations basées sur les graines | Oui |
fonctionnalités_audio | Non | Obtenir des fonctionnalités audio pour une piste | Non |
audios_features | Non | Obtenez des fonctionnalités audio pour plusieurs pistes | Non |
analyse_audio | Oui | Obtenir une analyse audio pour une piste | Oui |
appareil | Oui | Obtenir les appareils disponibles d'un utilisateur | Oui |
lecture_actuelle | Oui | Obtenir des informations sur la lecture actuelle de l'utilisateur | Oui |
lecture_actuelle | Non | Obtenir la piste en cours de lecture de l'utilisateur | Non |
transfert_lecture | Oui | Transférer la lecture d'un utilisateur | Oui |
start_playback | Oui | Démarrer/Reprendre la lecture d'un utilisateur | Oui |
pause_lecture | Oui | Suspendre la lecture d'un utilisateur | Oui |
piste_suivante | Oui | Passer la lecture de l'utilisateur à la piste suivante | Oui |
piste_précédente | Oui | Passer la lecture de l'utilisateur à la piste précédente | Oui |
seek_track | Oui | Rechercher une position dans la piste en cours de lecture | Oui |
répéter | Oui | Définir le mode de répétition sur la lecture de l'utilisateur | Oui |
volume | Oui | Régler le volume pour la lecture de l'utilisateur | Oui |
mélanger | Oui | Activer la lecture aléatoire pour la lecture de l'utilisateur | Oui |