Saltar a contenido

beets

Post-procesador de metadatos de música. Corre automáticamente cuando Lidarr importa un artista nuevo: busca letras, album art, género y analiza BPM.

Stack

Qué Dónde
Dockerfile /opt/docker/beets/Dockerfile
Compose /opt/docker/beets/compose.yaml
Config /opt/docker/beets/config/config.yaml
Script BPM /opt/docker/beets/bpm.py
Script Lidarr /opt/docker/beets/lidarr-import.sh
Imagen beets:local (local build)

Contenedor: no corre como daemon — se ejecuta via docker run --rm desde el script de Lidarr.

Qué hace

Cuando Lidarr importa un album, ejecuta /beets/lidarr-import.sh que corre:

Paso Acción
1. beet import -q -A Agrega a la librería (sin autotag, preserva tags)
2. beet lyrics -p Descarga letras desde Genius/lyrics.ovh
3. beet fetchart Descarga album art (coverartarchive.org, iTunes)
4. beet lastgenre Asigna género via Last.fm
5. bpm.py Analiza BPM con librosa

Comandos útiles

# Procesar un artista manualmente
/opt/docker/beets/lidarr-import.sh /mnt/hdd_2tb/navidrome_music/Artista

# Analizar BPM de un track específico
sudo docker run --rm \
  -v /mnt/hdd_2tb/navidrome_music:/music \
  --entrypoint python3 \
  beets:local /usr/local/bin/bpm.py "/music/Artista/Album/track.flac"

# Ver stats de la librería beets
sudo docker run --rm \
  -v /opt/docker/beets/config:/config \
  beets:local stats

# Reconstruir imagen
cd /opt/docker/beets && sudo docker build -t beets:local .

Notas

  • Los archivos de música se montan read-write para escribir tags (letras, genre, BPM)
  • La base de datos de beets está en /opt/docker/beets/config/library.db
  • Si se borra la DB, la próxima importación la recrea desde cero
  • Libros está incluido para BPM (dependencia pesada ~300MB en la imagen)