Created scripts/to-mp3 (bash,
ejecutable) + just to-mp3 en justfile
Conversión: ffmpeg/libmp3lame, VBR 0-9 por defecto
(V0) o CBR por bitrate (-q 320), acepta archivos
individuales, varios archivos o directorios (find recursivo)
Naming: slugify (lowercase, acentos→ascii vía
iconv, solo a-z0-9 y guiones) + sufijo
-dur<segundos>.mp3 (duración redondeada de
ffprobe)
Incremental: mtime check — solo reconvierte si el
origen es más reciente que el MP3 de salida; --overwrite
fuerza todo
Robustez: escritura a temp + rename atómico (sin
outputs parciales), errores de ffmpeg no matan el script (contador
FAILED), colisiones de slug desambiguadas con -2,
-3, stem vacío → _
Metadata ID3: title = nombre original
del archivo (no el slug), artist/album
opcionales vía env vars ARTIST/ALBUM; copia de MP3 usa stream copy
(-c copy) reescribiendo tags
Default output: materiales/raw/ (env
OUTDIR o -o); find excluye .mp3 al expandir
directorios para evitar reprocesar outputs propios
Reviewed 2× con rule-of-5: ronda 1 → NEEDS_REVISION
(error path muerto por set -e, colisiones); ronda 2 → READY (0
CRITICAL/HIGH)
Next: script listo y probado; sin pendientes
abiertos en el repo (0 issues en bd)