Présentation
Spotatui est un lecteur musical autonome fonctionnant dans le terminal, développé en Rust. Le projet se décrit comme capable de diffuser nativement depuis Spotify tout en intégrant des sources locales, Subsonic, des radios Internet, Qobuz et YouTube. L’objectif principal affiché est d’éliminer les restrictions de taux imposées par l’API web officielle de Spotify, en s’appuyant sur le protocole client plutôt que sur les points d’accès REST.
Architecture technique
Le dépôt comporte plusieurs répertoires clés : src pour le cœur de l’application, gui pour l’interface graphique, desktop et worker-relay pour la gestion des processus en arrière‑plan. La présence d’un fichier Cargo.toml confirme l’utilisation du gestionnaire de paquets Rust et indique que le projet s’appuie sur l’écosystème async (probablement tokio) pour orchestrer les flux audio et les appels réseau. Le choix de Rust garantit une empreinte mémoire réduite et une exécution native, ce qui explique la mention de « fast » dans la description.
Pour le rendu terminal, le projet inclut probablement une bibliothèque de type tui‑rs ou crossterm, tandis que la partie GUI pourrait reposer sur egui ou iced. L’absence de code source détaillé dans la description empêche de confirmer ces hypothèses, mais la structure du dépôt suggère une séparation claire entre logique métier et interface.
Gestion du streaming et contournement des limites
En contournant l’API web, Spotatui utilise très probablement librespot, une implémentation libre du protocole de streaming Spotify. Cette approche permet d’établir une connexion directe avec les serveurs de musique, évitant ainsi les quotas de requêtes HTTP typiques des API publiques. Le lecteur peut ainsi récupérer les flux audio en temps réel sans être soumis aux restrictions de 10 requêtes/secondes ou aux limites de pagination.
Le support de sources tierces (Subsonic, Qobuz, YouTube) indique l’intégration de clients HTTP ou de bibliothèques spécialisées (par ex. reqwest ou youtube-dl en arrière‑plan). Le répertoire worker-relay semble dédié à la médiation entre ces flux externes et le moteur audio, assurant une lecture fluide même lorsque plusieurs protocoles sont combinés.
cargo install --git https://github.com/LargeModGames/spotatui
spotatui --source spotify --track "Never Gonna Give You Up"Analyse des performances et limites
Le choix de Rust et d’une architecture asynchrone promet une latence minimale et une consommation CPU réduite, ce qui est crucial pour un lecteur fonctionnant en mode texte. Cependant, l’absence de benchmarks publics empêche de quantifier précisément le gain par rapport à des clients basés sur l’API web. De plus, le recours à des protocoles non officiels (librespot) peut exposer l’utilisateur à des risques de compatibilité lors de mises à jour du service Spotify, car le protocole n’est pas garanti stable.
Enfin, la prise en charge de multiples sources augmente la surface d’attaque potentielle. Sans audit de sécurité dédié, chaque module (ex. le relais YouTube) introduit des dépendances externes qui pourraient être exploitées. Le projet inclut un fichier SECURITY.md, mais aucune vulnérabilité connue n’est répertoriée à ce jour.