Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

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

Ver códigoProblemas y ayudaRepositorio ↗
00

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.

CASOS DE USO
  • 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
PUNTOS DESTACADOS
  • 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
PRECAUCIONES
  • 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
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU2 vCPUrecomendación inicial
MEMORIA2 GBRAM estimada
DISCO20 GBalmacenamiento base
COMPLEJIDADmediumnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Listo para automatizar

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.

✓Dockerfile
✓Compose
✓One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Next.jsPython
SERVICIOS
PostgreSQL
BASES DE DATOS
PostgreSQL
PUERTOS
5437
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

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.