Beets est un script Python sans gui ; il est manipulé par la console. C’est un puissant gestionnaire de métadonnées audio, il utilise en effet la base de données MusicBrainz pour ses indexations.

Sa force réside dans ses plugins, activables dans son fichier de configuration et capables de diverses choses très intéressantes, notamment d’analyse audio.


Installation

Beets est un script python installable par pip :

Sur divers systèmes linux :
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip

Sur Debian/Ubuntu : 
apt-get install python-dev python-setuptools python-pip
apt install -y beets

Pour mettre à jour : 
pip install -U beets

On appelle le programme directement par la ligne de commande.

La première chose à faire réside dans le paramétrage du fichier de configuration, opération fondamentale. Il est automatiquement créé lors de l’installation et son chemin est donné par la commande suivante :

beet config -p

Le mien est situé dans /root/.config/beets/config.yaml

C’est au départ un fichier vide . Les premières informations à introduire sont relatives au chemin de la base de données et de la librairie :

directory: ~/Musique
library: ~/musicdata/musiclibrary.db

Attention à bien créer l’arborescence ~/musicdata avant le lancement.

On vérifie qu’il n’y a pas de problèmes en appelant la commande beet :

root@Germanium_[17:35:40]_~: beet
Usage:
  beet COMMAND [ARGS...]
  beet help COMMAND

Options:
  --format-item=FORMAT_ITEM
                        print with custom format
  --format-album=FORMAT_ALBUM
                        print with custom format
  -l LIBRARY, --library=LIBRARY
                        library database file to use
  -d DIRECTORY, --directory=DIRECTORY
                        destination music directory
  -v, --verbose         log more details (use twice for even more)
  -c CONFIG, --config=CONFIG
                        path to configuration file
  -h, --help            show this help message and exit

Commands:
  absubmit          calculate and submit AcousticBrainz analysis
  acousticbrainz    fetch metadata from AcousticBrainz
  bad               check for corrupt or missing files
  clearart          remove images from file metadata
  config            show or edit the user configuration
  embedart          embed image files into file metadata
  extractart        extract an image from file metadata
  fetchart          download album art
  fields            show fields available for queries and format strings
  fingerprint       generate fingerprints for items without them
  help (?)          give detailed help on a specific sub-command
  import (imp, im)  import new music
  info              show file metadata
  lastgenre         fetch genres
  list (ls)         query the library
  lyrics            fetch song lyrics
  mbsync            update metadata from musicbrainz
  mbupdate          Update MusicBrainz collection
  missing (miss)    List missing tracks.
  modify (mod)      change metadata fields
  move (mv)         move or copy items
  remove (rm)       remove matching items from the library
  stats             show statistics about the library or a query
  submit            submit Acoustid fingerprints
  update (upd, up)  update the library
  version           output version information
  write             write tag information to files

J’ai quelques plugins activés, il est normal que votre liste de commandes disponibles soit plus réduite.

Parlons des plugins justement ! C’est indéniablement la force du logiciel. Ils permettent beaucoup de choses, grossièrement :

  • Autotag depuis les IDs MusicBrainz
  • Export des données vers MusicBrainz
  • Vérification de l’intégrité
  • Autotag chroma/acoustID (analyse audio)
  • Conversion à la volée
  • Analyse Discogs
  • Analyse des doublons
  • Intégration des artworks
  • Notification des clients (Emby; Plex …)
  • Analyse des métadonnées depuis le filename
  • Analyse harmonique de la tonalité
  • Intégration automatique du genre
  • Intégration automatique des paroles
  • Statistiques autours des fichiers manquants
  • Gestion des permissions avancée
  • Normalisation / Gain automatique
  • Interface web

Les principaux plugins sont les suivants :

directory: /home/general/torrents/Musique
library: ~/musicdata/musiclibrary.db

plugins: missing  mbsync mbcollection fromfilename badfiles fetchart absubmit discogs acousticbrainz fromfilename chroma embedart lastgenre lyrics info
  • Missing : Liste exhaustive des fichiers manquants (track sur album par exemple)
  • Mbsync : Extraction des métadonnées depuis MusicBrainz après analyse
  • Mbcollection : Upload de la base de données sur une collection MusicBrainz
  • Fromfilename : Identification d’après le nom de fichier
  • Badfiles : Analyse audio pour trouver les fichiers corrompus
  • Fetchart : Captage des artworks
  • Absubmit : Analyse audio pour identification depuis MusicBrainz
  • Discogs : Analyse depuis les serveurs Discogs
  • Acousticbrainz : Analyse acoustique depuis les serveurs MusicBrainz
  • Chroma : Analyse acoustique via AcoustID
  • Embedart : Intégration des covers dans les métadonnées
  • Lastgenre : Intégration du genre dans les métadonnées
  • Lyrics : Intégration des paroles dans les métadonnées
  • Info : Énumération des tags

Paramétrage

On ajoute les options de configuration des plugins :

directory: /home/general/torrents/Musique
library: ~/musicdata/musiclibrary.db

plugins: missing  mbsync mbcollection fromfilename badfiles fetchart absubmit discogs acousticbrainz fromfilename chroma embedart lastgenre lyrics info

missing:
    total: yes
acousticbrainz:
    auto: yes
mbcollection:
    auto: yes
musicbrainz:
    user: <user>
    pass: <pass>
fetchart:
    auto: yes
import:
    copy: no
    write: yes
chroma:
    auto: no
embedart:
    auto: yes
absubmit:
    auto: yes
    extractor: /usr/local/bin/abzsubmit
lastgenre:
    auto: yes
    count: 2
lyrics:
    auto: yes

Tout les plugins ne disposent pas d’un paramétrage car certains n’en ont pas besoin, d’autres doivent être paramétrés en automatique : auto:yes. L’activation de cette option permet d’exécuter l’opération lors d’un import standard.

A cette étape, nous allons préparer la configuration de différents ressources qui demandent des étapes supplémentaires. En effet, certains composants ont besoins de leurs dépendances pour fonctionner.

Chroma (Analyse Acoustique)

Installation des dépendances :

apt-get install libchromaprint-tools gstreamer1.0 python-gi
pip install pyacoustid

AcousticBrainz Submit (Analyse Acoustique)

Installation des dépendances :

pip install requests

Ensuite, il faut récupérer et installer un extracteur depuis les serveurs de MusicBrainz.

cd /tmp
wget ftp://ftp.acousticbrainz.org/pub/acousticbrainz/abzsubmit-0.1-linux-i686.tar.gz
tar xzf abzsubmit-0.1
cd abzsubmit-0.1
python setup.py

On indique ensuite le chemin vers exécutable dans le fichier de configuration de beet avec le marqueur extractor: /usr/local/bin/abzsubmit

Discogs (Autotag)

Installation des dépendances :

pip install discogs-client

Il faut ensuite créer un compte sur Discogs, c’est gratuit et unique. Les IDs et mot de passe seront rentrés dans le logiciel lors du premier import.

Badfiles(Integrity Check)

Installation des dépendances :

apt install -y flac mp3val

Importation

L’importation est une opération basique dans la manipulation des métadonnées : elle se fait artistes par artistes, soit selon les dossiers de discographie.

beet -v import <path_artist>

Conclusion

Cette configuration devrait permettre de passer par dessus la plupart des soucis d’identification rencontrés habituellement. Une fois opérationnelle elle sera en effet à l’épreuve des fichiers vides de métadonnées ou mal taggés. Elle se révèle être très efficace en complément de l’identification manuelle.


Laisser un commentaire