Zymphony
Los ZIP entran hechos un desastre y salen como un álbum: con su título real, su portada dentro de cada pista y las canciones numeradas en orden.
- Se procesa en local
- Docker
- Python
- amd64 y arm64
- Código abierto (MIT)
El problema
Cuando le pides una lista de reproducción al bot @deezload2bot de Telegram, lo que recibes es uno o varios ZIP con nombre de código y las canciones dentro sin ordenar. Si los descomprimes tal cual en tu servidor de música, el resultado es un desastre.
Una lista de sesenta canciones entra en Navidrome como sesenta álbumes de una sola pista, sin portada y con un nombre que no dice nada. Zymphony se pone en medio y lo arregla antes de que llegue a la biblioteca.
Qué arregla, punto por punto
| En el ZIP tal y como llega | Lo que hace Zymphony |
|---|---|
La carpeta se llama 7EAqBCOVkDZcbccjxZmgjp |
La renombra con el título real de la lista, consultado a Spotify y saneado para el sistema de ficheros. |
| La lista viene partida en varios ZIP | Agrupa las partes por su identificador, espera a tenerlas todas y las funde en un solo álbum. |
| No hay portada | Descarga la portada en máxima resolución, la guarda como cover.jpg y además la embebe dentro de cada MP3. |
| Cada pista dice pertenecer a un álbum distinto | Reescribe la etiqueta de álbum con el nombre de la lista. |
| Las canciones se dispersan como álbumes sueltos | Marca la recopilación y fija el artista del álbum: el común si todas coinciden, y «Various Artists» si no. |
| Los números de pista son los del disco original | Las renumera del 1 al N siguiendo el orden de las partes. |
| Los ZIP se van acumulando en descargas | Los borra en cuanto el álbum está escrito correctamente. |
Cómo funciona
Se queda vigilando una carpeta. Tú dejas los ZIP ahí y te olvidas.
-
1 · Vigila
Revisa la carpeta de entrada cada minuto y agrupa los ficheros por el identificador de la lista, aceptando tanto el nombre pelado como una URL o un URI de Spotify.
-
2 · Espera a que esté completo
No toca nada hasta estar seguro: comprueba el tamaño de las partes y que ninguna ha cambiado durante unos minutos. Dos señales independientes, para no procesar una descarga a medias.
-
3 · Extrae y etiqueta
Descomprime, reúne las pistas, reescribe álbum, artista del álbum, número de pista y marca de recopilación, y embebe la portada en cada fichero.
-
4 · Entrega y limpia
Mueve el álbum terminado a la biblioteca y borra los ZIP de origen. Si algo falla por el camino, retira la carpeta a medio hacer en lugar de dejarla ahí.
Dónde ocurre todo
En tu máquina o en tu NAS. La música no se sube a ningún sitio. La única conexión que sale a internet es una consulta de solo lectura a la API de Spotify para saber cómo se llama la lista y descargar su portada.
Ponerlo en marcha
Necesitas una aplicación de Spotify propia para las credenciales. La autorización se hace una sola vez y el token queda guardado.
services:
zymphony:
image: jorgejiro/zymphony:latest
container_name: zymphony
restart: unless-stopped
volumes:
- /ruta/a/descargas:/input
- /ruta/a/musica:/output
- /ruta/a/config:/config
environment:
- SPOTIFY_CLIENT_ID=tu_client_id
- SPOTIFY_CLIENT_SECRET=tu_client_secret
- TZ=Europe/Madrid
Hay dieciséis variables de entorno para ajustar cada cuánto escanea, cuánto espera antes de procesar, qué artista de álbum poner o si borrar los ZIP, además de notificaciones opcionales a Discord. Están todas explicadas en el README, junto con la guía completa para Synology.