Mon ancien Kindle prenait la poussière jusqu'à ce que je le transforme en un joli tableau de bord Spotify
J'ai récemment été un peu sur l'auto-hébergement et le homelab, j'essaie donc de tirer le meilleur parti du matériel que j'ai qui traîne. J'ai récemment réalisé que les Kindle constituaient d'excellents tableaux de bord en raison de leur faible consommation d'énergie et de leurs magnifiques écrans E-Ink. J'utilise donc le mien comme télécommande et tableau de bord Spotify.
Sommaire
Mon premier tableau de bord Kindle était un minuteur de productivité
J'avais un demi-ordinateur portable qui traînait (un demi-ordinateur sans écran), que j'ai transformé en un petit serveur sur lequel j'ai hébergé un tas d'applications. L'une de ces applications était Timetagger, que j'utilise pour suivre mes heures de travail. C'est génial, mais je dois changer d'onglet pour voir depuis combien de temps je travaille sur une tâche. Je voulais un moyen de le rendre facilement visible en un coup d'œil. Au début, je pensais pouvoir afficher la sortie de la minuterie de Timetagger sur mon téléphone, mais cela drainerait trop de batterie pour garder l'écran allumé pendant des heures. C'est à ce moment-là que j'ai réalisé que mon Kindle était parfait pour ce travail.
J'ai utilisé l'API fournie par Timetagger pour obtenir les informations sur la minuterie. Ensuite, j'ai créé un simple script bash exécuté sur le même serveur que le conteneur Timetagger. Le script Bash génère une page HTML actualisée toutes les quelques secondes. Le halftop diffuse cette page sur mon réseau local sur un port spécifique, auquel je peux accéder sur mon Kindle à l'aide de son navigateur Web intégré. La page est automatiquement actualisée avec les données de minuterie mises à jour toutes les quelques secondes.
Cette configuration simple du tableau de bord était si parfaite pour mes besoins que j'ai commencé à penser à d'autres éléments que je pourrais afficher sur mon Kindle. Ma première pensée a été de configurer le contrôle à distance pour mon client Spotify. De cette façon, je n'aurais pas besoin de changer d'application pour consulter la minuterie ou contrôler la lecture de musique tout en travaillant sur mon bureau.
J'ai trouvé une application gratuite, mais elle ne fonctionne qu'avec Spotify Premium
Il s’avère qu’il existe déjà une application pour ce travail précis. Il s'agit d'une application Web gratuite appelée Kindlify. Vous ouvrez le site Web Kindlify.co dans votre navigateur Kindle, scannez le code QR avec votre téléphone, connectez-vous à votre Spotify et jouez quelque chose. Revenez ensuite sur votre Kindle et il devrait vous montrer une belle interface avec une couverture d'album, une barre de recherche, des noms de piste et d'artiste et des commandes de lecture.
Il ne diffusera pas de musique via les appareils Bluetooth connectés à votre Kindle. C'est juste une télécommande. La musique sera toujours diffusée via le client exécuté.
Malheureusement, vous avez besoin d'un abonnement Spotify premium pour que cela fonctionne, car Spotify ne partage les API Web qu'avec les comptes premium. Spotify a également restreint sa fonctionnalité « Spotify Connect », qui permet à d'autres clients et démons de prendre en charge la lecture. J'ai donc décidé de le faire moi-même.
J'ai utilisé la moitié d'un ordinateur portable et un script léger pour créer un tableau de bord Spotify
Comme je ne pouvais pas obtenir l'API et que je ne pouvais pas accéder à Spotify à l'aide d'un démon sans tête, j'avais besoin d'une troisième façon d'interagir avec le lecteur Spotify.
Heureusement, Linux est venu à mon secours. Il dispose d'un système interne « D-Bus » qui permet aux applications de communiquer entre elles. Je pourrais donc simplement installer le client Spotify standard sur le serveur et le contrôler à l'aide de l'interface D-Bus. Il existe un outil léger appelé playerctl cela simplifie cette interaction avec D-Bus. Vous n’avez rien à coder car il gère tout pour vous. Par exemple, playerctl pourrait suspendre la lecture de Spotify avec une commande comme celle-ci.
playerctl -p spotify pause
Je pourrais également passer next, CV, métadonnées ou titre comme arguments.
Le halftop exécutait déjà Linux, il ne nécessitait donc aucune configuration. Maintenant que je disposais d'un simple outil CLI pour parler à Spotify, l'étape suivante consistait à utiliser des commandes shell dans un script. Ce script serait un serveur Web qui fait trois choses.
-
Sert la page Web (où l'interface de contrôle à distance est affichée)
-
Écoute les demandes envoyées depuis la page Web (par exemple, une demande de lecture de la piste suivante)
-
Exécute
playerctlcommandes basées sur les requêtes reçues de la page Web.
Depuis playerctl fait abstraction de toute la complexité, le script est simple. J'ai demandé à Claude de générer un script Python de base qui pouvait faire tout cela. Claude a écrit un playerctl() fonction qui s'exécute pertinente playerctl commandes et imprime leur sortie.
Python a un intégré http.server bibliothèque qui peut transformer n'importe quel dossier en un simple serveur Web capable de gérer les requêtes HTTP. Claude l'a inclus dans le script, qui l'exécute comme serveur web. Je n'accéderai à cette télécommande Spotify que via mon réseau local, cette configuration fonctionne donc pour mes besoins.
Voilà à quoi ça ressemble en action
Après avoir démarré le serveur Web, j'avais juste besoin d'un client Spotify fonctionnel pour tout cliquer ensemble. J'ai installé Spotify sur le même halftop et je l'ai exécuté. Après m'être connecté et avoir lu une piste, il était temps de tester ma configuration.
La première version était assez basique. Ce n'était que 3 boutons pour mettre en pause, reprendre et sauter des pistes. C'était fonctionnel, mais ça n'avait pas l'air très bien. Je voulais quelque chose qui ressemble à un véritable tableau de bord. Ainsi, dans la deuxième version, j'ai demandé à Claude de créer une interface minimaliste en noir et blanc avec une barre de progression, une pochette et des détails sur la piste, l'artiste et l'album.
Après l'avoir modifié un peu manuellement, voici ce que j'ai maintenant. La page s'actualise automatiquement toutes les quelques secondes pour afficher l'écran actuel « Lecture en cours ».
La même télécommande fonctionne également sur mon téléphone, j'ai donc maintenant deux façons de contrôler ma lecture Spotify. Cependant, le Kindle constitue un tableau de bord parfait en raison du peu de consommation de batterie pour garder l'écran allumé pendant des heures. C'est aussi plus agréable pour les yeux.
