

Introducción: Por qué quería replicar mis listas
Escucho en Spotify, pero de vez en cuando necesito las mismas listas también en YouTube, por ejemplo para un dispositivo sin Spotify, para compartir o para vídeos de fondo. Reconstruir eso a mano cada vez es tedioso. Así que escribí una herramienta que se encarga exactamente de eso, y la publiqué como código abierto.
Qué hace
Una interfaz web ligera muestra tus listas de Spotify numeradas y ordenadas alfabéticamente. Eliges una, varias o todas, y la herramienta crea la lista de YouTube correspondiente o encuentra una ya existente y la rellena con las mismas canciones.
La sincronización funciona deliberadamente en una sola dirección: Spotify es la fuente de la verdad. Lo que cambies o elimines en YouTube nunca afecta a Spotify. Si eliminas algo en YouTube y sincronizas de nuevo, se restaura el estado de Spotify. Las canciones que falten se añaden y las sobrantes se eliminan si se desea. La lista de YouTube es entonces un reflejo exacto del original de Spotify.
Mientras se ejecuta un proceso, ves una cola en vivo con un estado por lista (en espera, en ejecución, terminado) y puedes cancelar listas individuales o todo el proceso en cualquier momento.
Dos límites técnicos
Dos características se derivan de las APIs y determinan lo que la herramienta puede hacer.
Primero, no hay garantía de que siempre se encuentre exactamente la versión de Spotify y no una versión de otro intérprete. No existe una correspondencia oficial entre un ID de pista de Spotify y un vídeo concreto de YouTube. Buscas y obtienes vídeos como resultado. Lo que sí es posible es una buena coincidencia basada en reglas. Más sobre esto enseguida. Las canciones sobre las que la herramienta no está segura van a una lista de revisión en lugar de añadirse de forma silenciosa.
Segundo, la interfaz de YouTube tiene una cuota diaria. Una búsqueda es comparativamente costosa, por lo que solo se puede resolver un número limitado de canciones nuevas al día. Por eso, las bibliotecas grandes tardan varios días. Para que esto no empiece desde cero cada vez, la herramienta recuerda cada coincidencia de forma permanente, incluidas las fallidas. En la siguiente ejecución, una canción ya conocida no cuesta nada más, y puedes continuar justo donde la cuota se detuvo el día anterior.
Cómo encuentra la versión correcta
El truco está en un detalle del ecosistema de YouTube: para casi cada canción publicada oficialmente, YouTube crea automáticamente una entrada en un canal con el patrón „Artista - Topic". Eso es lo más parecido a la versión de estudio. Por eso, la coincidencia favorece deliberadamente estos canales Topic, así como los canales oficiales y de VEVO, compara además la duración con la longitud de Spotify y penaliza todo lo que suene a variante, como versión de otro intérprete, en directo, remix, karaoke, demo o extended mix. Si el mejor candidato queda por debajo de una calidad mínima ajustable, no se adopta automáticamente, sino que se incluye en la lista de revisión. En la práctica, esto detecta exactamente a los sospechosos correctos, mientras que los originales limpios pasan sin problema.
Tecnología
El backend está escrito en Python con FastAPI, y el inicio de sesión funciona mediante los mecanismos actuales de OAuth (Spotify Authorization Code, Google OAuth con acceso sin conexión). El almacenamiento es una pequeña base de datos SQLite que sirve también como caché de coincidencias. La interfaz es deliberadamente JavaScript puro y ligero, sin lastre de frameworks. La herramienta se ejecuta de forma local, te pertenece, y no hay servidores de terceros de por medio.
Pruébalo tú mismo
El código está disponible abiertamente en GitHub, incluida una guía bilingüe (inglés y alemán) que te lleva paso a paso por la creación de las credenciales de Spotify y Google:
github.com/netperformance/SpotifyYoutubeSynchronizer
Cada persona crea sus propias claves de API y las introduce en un archivo de configuración local, así que no se comparten credenciales. Un comando corto, conectar ambos servicios, seleccionar listas, listo.
En la lista para la próxima versión hay una interfaz para asignar manualmente el vídeo correcto a las coincidencias inciertas, de modo que la lista de revisión no solo descarte, sino que también resuelva. Los comentarios y las pull requests son bienvenidos.
