airdrome
Airdrome es un proyecto Python que permite migrar una biblioteca de música y años de historial de reproducción desde servicios como Spotify, Apple Music, Last.fm y ListenBrainz a Navidrome. Utiliza Python con PostgreSQL para el almacenamiento de datos.
Ficha actualizada 22 sept 2026, 21:24 · upstream 22 sept 2026, 20:55 · release sin release detectada
Qué es airdrome
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
Migrar tu biblioteca musical —y décadas de historial de escucha— hacia un sistema propio sin perder nada. Tus archivos residen en una sola carpeta, tus conteos de reproducción viven en Spotify JSON export, tus calificaciones en Apple Library.xml y tus playlists están dispersas entre tres plataformas que no se comunican entre sí. Navidrome sirve los archivos sin conocer el resto.
Airdrome es la transición necesaria: ingresa cada exportación, resuelve la misma canción en todo lugar mediante un canon único, vincula esos tracks a los archivos reales de disco, organiza la biblioteca y escribe los conteos, calificaciones y playlists dentro de Navidrome. Cada etapa es idempotente: ejecutarla, importar otro export y volver a ejecutarlo no causa errores.
El problema central no es leer los exports, sino que ninguna fuente identifica una canción de forma única. Un scrobble de 2014 puede tener solo tres líneas de texto para conectar con un FLAC en tu disco. Airdrome resuelve esto mediante un hub canónico y una coincidencia fuzzy en base a trigramas en PostgreSQL.
- Migrar una biblioteca de música existente desde Spotify, Apple Music o Last.fm
- Consolidar múltiples exportaciones de streaming (Spotify, Apple Music, ListenBrainz) en un solo repositorio
- Organizar archivos de audio y organizar playlists dispersas por plataformas
- Recuperar historial de reproducción perdido entre servicios de streaming
- Crear una biblioteca centralizada que permita sincronización entre múltiples dispositivos
- Es completamente idempotente: cada paso puede ejecutarse varias veces sin errores ni pérdida de datos
- Utiliza PostgreSQL con trigramas (pg_trgm) para coincidencias fuzzy en texto, permitiendo que 'Sigur Rós — Untitled #1' y 'Sigur Ros - Untitled 1 (Vaka)' se muestren como la misma canción
- Permite decidir manualmente qué versión de una canción es la real mediante grupos de duplicados con opción de revisión interactiva
- No requiere que Navidrome esté activo para sincronizar playlists: cada backend recibe un snapshot independiente y resuelve conflictos localmente
- Soporta importación desde múltiples fuentes simultáneamente (iTunes, Apple Music, Spotify, Last.fm, ListenBrainz) con detección automática de formatos
- No sincroniza playlists entre plataformas directamente: cada exportación se vincula a su propia versión del canon
- La coincidencia fuzzy tiene un umbral configurable que puede resultar en agrupaciones incorrectas si el texto es muy similar pero no idéntico
- El historial de reproducción se pierde al migrar (solo se sincronizan playlists y calificaciones, no los conteos de escucha)
- No integra con servicios de streaming como Spotify o Apple Music: solo importa exportaciones existentes
- La deduplicación automática puede agrupar canciones que son realmente diferentes si tienen el mismo nombre de artista
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Requisitos mínimos: Python 3.14+, uv y Docker con PostgreSQL. Ejecuta `uv sync` para instalar dependencias y `docker compose up -d` para iniciar la base de datos. Configura `.env` con DB_DSN, LIBRARY_DIR y NAVIDROME_DB_DSN. El esquema se aplica automáticamente al primer `airdrome import`. Para producción, considera un contenedorizado completo (Docker Compose) o despliegue en servidor Linux con systemd.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.