Recientemente he estado en un proceso de autohospedaje y laboratorio doméstico, así que estoy tratando de aprovechar al máximo el hardware que tengo por ahí. Recientemente me di cuenta de que los Kindles son excelentes paneles de control debido a su bajo consumo de energía y sus hermosas pantallas de tinta electrónica. Así que he estado usando el mío como control remoto y tablero de Spotify.
Mi primer panel de Kindle fue un temporizador de productividad
Tenía media computadora portátil por ahí (mediana sin pantalla), que convertí en un pequeño servidor y alojé un montón de aplicaciones en ella. Una de esas aplicaciones fue Timetagger, que uso para realizar un seguimiento de mis horas de trabajo. Es genial, pero tengo que cambiar de pestaña para ver cuánto tiempo llevo trabajando en una tarea. Quería una manera de hacerlo fácilmente visible de un vistazo. Al principio, pensé que podría mostrar la salida del temporizador de Timetagger en mi teléfono, pero consumiría demasiada batería para mantener la pantalla encendida durante horas. Fue entonces cuando me di cuenta de que mi Kindle es perfecto para este trabajo.
Utilicé la API proporcionada por Timetagger para obtener la información del temporizador. Luego creé un script bash simple que se ejecuta en el mismo servidor que el contenedor Timetagger. El script Bash genera una página HTML que se actualiza cada pocos segundos. Halftop ofrece esa página a través de mi red local en un puerto específico, al que puedo acceder en mi Kindle usando su navegador web integrado. La página se actualiza automáticamente con los datos actualizados del temporizador cada pocos segundos.
Esta sencilla configuración del panel era tan perfecta para mis propósitos que comencé a pensar en otras cosas que podría mostrar en mi Kindle. Lo primero que pensé fue configurar el control remoto para mi cliente Spotify. De esa manera, no tendría que cambiar de aplicación para mirar el cronómetro o controlar la reproducción de música mientras trabajo en mi escritorio.
Encontré una aplicación gratuita, pero solo funciona con Spotify Premium
Resulta que ya existe una aplicación para este trabajo exacto. Es una aplicación web gratuita llamada Kindlify. Abres el sitio web Kindlify.co en tu navegador Kindle, escaneas el código QR con tu teléfono, inicias sesión en Spotify y reproduces algo. Luego regrese a su Kindle y debería mostrarle una hermosa interfaz con una portada de álbum, barra de búsqueda, nombres de pistas y artistas, y controles de reproducción.
No reproducirá música a través de ningún dispositivo Bluetooth conectado a su Kindle. Es sólo un control remoto. La música seguirá reproduciéndose en cualquier cliente que se esté ejecutando.
Desafortunadamente, necesita una suscripción premium de Spotify para que esto funcione porque Spotify solo comparte API web con cuentas premium. Spotify también ha restringido su función «Spotify Connect», que permite que otros clientes y demonios se hagan cargo de la reproducción. Entonces decidí hacerlo yo mismo.
Usé media computadora portátil y un script liviano para crear un panel de Spotify
Como no podía obtener la API y no podía acceder a Spotify usando un demonio sin cabeza, necesitaba una tercera forma de interactuar con el reproductor de Spotify.
Afortunadamente, Linux vino a rescatarme. Tiene un sistema interno «D-Bus» que permite que las aplicaciones se comuniquen entre sí. Entonces podría instalar el cliente Spotify normal en el servidor y controlarlo usando la interfaz D-Bus. Hay una herramienta liviana llamada playerctl que simplifica esta interacción con D-Bus. No tienes que codificar nada porque él se encarga de todo por ti. Por ejemplo, playerctl podría pausar la reproducción de Spotify con un comando como este.
playerctl -p spotify pause
También podría pasar siguiente, currículum, metadatos o título como argumentos.
El halftop ya ejecutaba Linux, por lo que no necesitaba ninguna configuración. Ahora que tenía una herramienta CLI sencilla para hablar con Spotify, el siguiente paso fue usar comandos de shell dentro de un script. Este script sería un servidor web que hace tres cosas.
-
Sirve la página web (donde se muestra la interfaz de control remoto)
-
Escucha las solicitudes enviadas desde la página web (por ejemplo, una solicitud para reproducir la siguiente pista)
-
ejecuta
playerctlcomandos basados en las solicitudes recibidas de la página web.
Desde playerctl Está abstrayendo toda la complejidad, el guión es simple. Le pedí a Claude que generara un script básico de Python que pudiera hacer todo eso. Claude escribió un playerctl() función que ejecuta relevante playerctl comandos e imprime su salida.
Python tiene un incorporado http.server Biblioteca que puede convertir cualquier carpeta en un servidor web simple que puede manejar solicitudes HTTP. Claude lo incluyó en el script, que lo ejecuta como servidor web. Solo voy a acceder a este control remoto de Spotify a través de mi red local, por lo que esta configuración funciona para mis propósitos.
Así es como se ve en acción.
Después de iniciar el servidor web, solo necesitaba un cliente de Spotify que funcionara para hacer clic en todo. Instalé Spotify en el mismo halftop y lo ejecuté. Después de iniciar sesión y reproducir una pista, llegó el momento de probar mi configuración.
La primera versión era bastante básica. Eran solo 3 botones para pausar, reanudar y saltar pistas. Era funcional, pero no se veía tan bien. Quería algo que pareciera un tablero real. Entonces, en la versión dos, le pedí a Claude que creara una interfaz minimalista en blanco y negro con una barra de progreso, una portada y detalles de la pista, el artista y el álbum.
Después de modificarlo un poco manualmente, esto es lo que tengo ahora. La página se actualiza automáticamente cada pocos segundos para mostrar la pantalla actual «Reproduciendo ahora».
El mismo control remoto también funciona en mi teléfono, así que ahora tengo dos formas de controlar mi reproducción de Spotify. Sin embargo, el Kindle es un tablero perfecto debido a lo poco que consume la batería para mantener la pantalla encendida durante horas. También es más agradable a la vista.
