Docker: Administra tu colección de música con Beets

· ☕ 8 min lectura · ✍️ [Carlos M.]
🏷️
  • #docker
  • #beets
  • Introducción

    Antes de nada, decir que Beets es un administrador para tu biblioteca
    de música y no un reproductor de música, aunque podemos añadir un
    plugin para reproducir música de forma muy básica. si el navegador
    soporta audio HTML5.

    Si cuentas con una gran colección de música Beets te ayudará a tenerla
    bien ordenada ya que se encargará de importar la biblioteca y
    etiquetarla correctamente según tus gustos.

    Beets es una herramienta increíble, escanea tu colección original y
    automáticamente borrará los metadatos y los sustituirá por los que
    encuentre en MusicBrainz corrigiendo cualquier inconsistencia que
    pueda haber encontrar en los metadatos de una pista, cComo errores
    tipográficos o errores ortográficos.

    Resumiendo Beets es una herramienta de limpieza de datos que pasamos a
    nuestra biblioteca de música, obteniendo unos archivos limpios y
    etiquetados correctamente.

    ¿Por qué usar una herramienta como esta?

    Generalmente obtenemos nuestra música de muchas maneras diferentes, ya
    sea comprándola en una tienda o descargándola de otras fuentes, así
    que lo más normal es que tengas muchos albines o canciones con
    diferentes metadatos, y es aquí donde entra a jugar Beets, volviendo a
    dar formato un único formato a todos los metadatos, además, controlas
    cómo quieres que tu música sea archivada y leída.

    Beets está escrito en Python, por la tanto depende de las bibliotecas
    de Python para funcionar. Sin embargo, si no te quieres complicar la
    vida puedes usar la imagen de linuxserver, ahorrándote molestias y
    asegurando tener instaladas correctamente todas las dependencias
    necesarias.

    Instalación

    Simplemente ejecuta el siguiente comando, eso si, configura los
    volúmenes según se correspondan a tu equipo, en mi caso:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    
    docker create \
      --name=beets \
      -e PUID=1000 \
      -e PGID=100 \
      -e TZ=Europe/Madrid \
      -p 8337:8337 \
      -v /mnt/datos/Docker/Config/beets:/config \
      -v /mnt/datos/Media/Música:/musica:/music \
      -v /mnt/datos/Descargas/:/downloads \
    --restart unless-stopped \
      linuxserver/beets
    
    • config: es el directorio de configuración, contiene todos los
      archivos de configuración de Beets, incluida la base de datos de
      música. Los coloco en /mnt/datos/Docker/Config/beets de mi
      disco.

    • music: Es donde deseas reside tu música limpia una vez
      importada y con los nuevos metadatos. En mi caso, tengo mi
      colección de música en /mnt/datos/Media/Música.

    • downloads: es la carpeta donde actualmente residen los datos
      no limpios o que deseas importar.

    • GID y {UID son los ID de grupo y usuario a los que se
      asignará el contenedor en ejecución.

    Una vez descargado y creado, el contenedor Beets se puede iniciar con:

    1
    
    docker start beets
    

    Configurando beets

    Beets tiene una gran cantidad de opciones para su configuración, pero
    también tiene una gran documentación sobre todos los comandos y
    opciones posibles.

    Todos los ajustes se almacenan en un archivo llamado config.yaml ,
    que reside en la carpeta /config del contenedor, si has creado un
    volumen para la carpeta /config puedes acceder al archivo de
    configuración y cambiarlo según tus preferencias.

    De manera predeterminada, la imagen de linuxserver utiliza una
    configuración muy parecida a la siguiente, recuerda que la
    configuración reside en el fichero en config.yaml

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    
    plugins: fetchart embedart convert scrub replaygain lastgenre chroma web
    directory: /music
    library: /config/libreria_musica.blb
    art_filename: albumart
    threaded: yes
    original_date: no
    per_disc_numbering: no
    
    convert:
        auto: no
        ffmpeg: /usr/bin/ffmpeg
        opts: -ab 320k -ac 2 -ar 48000
        max_bitrate: 320
        threads: 1
    
    paths:
        default: $albumartist/$album%aunique{}/$track - $title
        singleton: Non-Album/$artist - $title
        comp: Compilations/$album%aunique{}/$track - $title
        albumtype_soundtrack: Soundtracks/$album/$track $title
    
    import:
        write: yes
        copy: no
        move: yes
        resume: ask
        incremental: no
        quiet_fallback: skip
        timid: no
        log: /config/beet.log
        from_scratch: no
    
    lastgenre:
        auto: yes
        source: album
    
    embedart:
        auto: yes
    
    fetchart:
        auto: yes
    
    replaygain:
        auto: no
    
    scrub:
        auto: yes
    
    replace:
        '^\.': _
        '[\x00-\x1f]': _
        '[<>:"\?\*\|]': _
        '[\xE8-\xEB]': e
        '[\xEC-\xEF]': i
        '[\xE2-\xE6]': a
        '[\xF2-\xF6]': o
        '[\xF8]': o
        '\.$': _
        '\s+$': ''
    
    web:
        host: 0.0.0.0
        port: 8337
    

    Además como has podido observar viene con los plugins activados
    (fetchart embedart convert scrub replaygain lastgenre chroma web)

    La configuración predeterminada :

    Escanea la carpeta definida durante la creación del contenedor como
    /downloads en busca de música y raspa los metadatos desde MusicBrainz,
    si encuentra alguna discrepancia (nombres de pista mal escritos, por
    ejemplo), los corrige en función de un valor de similitud.

    Los archivos se renombrarán de acuerdo con el patrón estándar para
    cada pista y álbum definido en el fichero de configuración ( default: $albumartist/$album%aunique{}/$track - $title ).

    La música limpia se mueve ( move: yes ) a la carpeta de música
    designada ( directory: /music ).

    Si aún no existe, Beets descargará la portada del álbum, archivo
    albumart.jpg para cada álbum que se importe.

    Funcionamiento de beets

    Tenemos dos formas de interactuar con Beets, enviando las ordenes
    correspondientes al contenedor

    1
    2
    
    
    docker exec -u abc -it beets /bin/bash -c 'beet import /downloads'
    

    O bien entrando en la shell del contenedor y empezar a trabajar con Beets

    1
    
    docker exec -it beets /bin/bash
    

    Cuando Beets no puede encontrar información sobre un álbum, pregunta
    qué hacer, ya que así lo pedimos en nuestro fichero de configuración
    (resume: ask ), esto ocurrirá cuando Beets no pueda encontrar
    una coincidencia dentro del umbral de similitud, que por defecto está
    configurado en un 96% de probabilidad de coincidencia.

    Al importar, Beets escanea cada álbum individualmente, extrae la
    información relevante en línea y luego compara los nuevos datos con
    cada pista por lo que si tu colección es muy extensa y tiene muchos
    errores en los metadatos prepara un par de tazas de cafe hasta que
    termines la importación.

    Cuando se requiere la intervención manual deberemos decirle lo
    que deseamos hacer. Tendremos un conjunto de opciones en letras
    mayúsculas: A, M, S, U, T, G, E, I o B.

    Es decir, puedes elegir una de las siguientes opciones:

    • A : Aplica los cambios sugeridos que se muestran y continua.
    • M : Mostrar más opciones.
    • S : Salta este álbum por completo y pasa al siguiente, no lo importa.
    • U : Importa el álbum sin cambiar ninguna etiqueta. Esta es una
      buena opción para álbumes que no están en la base de datos de
      MusicBrainz
    • T : Importa el directorio como pistas, no como un álbum.
    • G : Agrupa pistas en este directorio por artista del álbum y álbum
      e importa los grupos como álbumes. Esto es útil si un directorio
      contiene varios álbumes.
    • E : Ingresa un artista y un álbum para usar como búsqueda en la
      base de datos. Usa esta opción si Beets no ha encontrado ninguna
      buena opción porque el álbum está equivocado o sin etiquetar.
    • I : Ingresa un ID de metadatos para usar como búsqueda en la base
      de datos. También puedes especificar varias ID separándolas por un
      espacio.
    • B : Cancela esta tarea de importación por completo. No se
      etiquetarán más álbumes; Beets se apaga inmediatamente. Sin embargo,
      la próxima vez que intentes importar el mismo directorio, Beets le
      preguntará si desea reanudar el etiquetado donde lo dejó.

    Ten en cuenta que la opción con los [C]orchetes es la predeterminada,
    por lo que si quieres aplicar los cambios, puedes presionar la tecla de
    retorno sin ingresar nada.

    Lo mismo ocurre si Beets encuentran un álbum o pista duplicado en la
    colección.

    La configuración que tengo Beets dice que los archivos de un álbum
    deben nombrarse como $track - $title , lo que significa que la
    importación borrará los datos agregando un guión entre el número de
    pista y su nombre.

    Según la configuración de mi fichero config.yaml, Beets borra
    cualquier carácter que pueda alterar los estándares de nombres
    ficheros(: / etc.).

    Añadir plugins

    Simplemente agrega el nombre del complemento a la sección plugins:
    en la parte superior de config.yaml .

    Actualizando datos ya importados

    Si ha pasado un tiempo desde nuestra última importación, los metadatos
    pueden haber cambiado en MusicBrainz Podemos ejecutar una actualización
    para asegurarnmos de que los datos se mantengan actualizados:

    1
    2
    
    
    docker exec -it beets /bin/bash -c 'beet update'
    

    Si realizamos cambios en la configuración que alteren la estructura
    física de los archivos de la colección, deberemos ejecutar una nueva
    importación en la carpeta de música:

    1
    2
    
    
    docker exec -it beets /bin/bash -c 'beet import /music'
    

    Aún hay muchos mas

    Esto es simplemente un poco de todo lo que puede hacer Beets por
    nuestra colección de música, tienes muchas opciones, plugins y
    configuraciones, te vuelvo a dejar un enlace a su documentación pos si
    quieres completar este articulo

    Espero que te haya gustado pasa un buen día…🐧

    Referencias:

    y*** PUBLICADA Powerline para tmux :tmux:

    :EXPORT_FILE_NAME: 2019-11-15-powerline-para-tmux
    :EXPORT_DATE: 2019-11-15

    En un articulo anterior vimos como instalar powerline en Fedora para
    mejorar el prompt de bash. Si utilizas tmux también puedes
    utilizar powerline para mejorar la experiencia

    Instalación

    Para Fedora

    1
    
    sudo dnf install tmux-powerline
    

    Configuración

    Editamos el fichero de configuración .tmux.conf y desconectamos o
    añadimos la línea

    1
    
    source "/usr/share/tmux/powerline.conf"
    

    Si no tienes un fichero de configuración en ~/.tmux.conf puedes copiar
    un ejemplo de /usr/share/tmux a ~/.tmux.conf

    Si en el fichero de configuración hemos hecho cambios relativos a la
    barra de estado, los eliminamos (status-left, status-right,
    status-left-length y status-right-length
    )

    Cuando iniciemos una sesión en tmux ya deberíamos de tener nuestra
    nueva barra de estado

    Espero que te haya gustado, pasa un buen día… 🐧

    Referencia

    https://fedoramagazine.org/add-power-terminal-powerline/

    Compartir en
    Apoya al autor con

    Hefistion
    ESCRITO POR
    [Carlos M.]