yaate : Yet Another Audio Tag Editor
Publié : 13 mar 2016, 18:04
Bien le bonjour à tous.
Ayant eu du mal à trouver un éditeur de tag pour les fichiers audio en ligne de commande qui me convienne, j'ai décidé d'en créer un.
Autant en terme d'interface graphique je trouve mon bonheur, notamment du côté de puddletag, autant du coté des CLI c'est assez limité...
J'ai bien essayé
On peut bien sur faire des scripts avec ça, mais pour gérer quasi-automatiquement une bibliothèque musicale qui se respecte un peu, ça deviens vite compliqué, et ça demande donc pas mal d’expérience en programmation.
Le but était donc de créer une commande permettant de modifier en une ligne les meta-données audio d'un grand nombre de fichiers.
Après une petite semaine, je pense être arrivé à quelque chose de fonctionnel et permettant déjà de faire pas mal de chose.
Le tout est écrit en python en utilisant le module
La plupart des options d’édition de tags permettent l'utilisation d'expressions régulières pour permettre une grande flexibilité.
Pendant ce temps, j'ai déjà implémenté des opérateurs permettant de :
- faire une sélection de fichier sur les tags via des expression régulière notamment
- lister les tags
- supprimer des tags
- ajouter/modifier des tags de manière brute ou en fonction des tags déjà présent ou du chemin du fichier (dossier, nom de fichier etc.)
- faire de la substitution au sein des tags, encore une fois de manière brute ou en utilisant les informations déjà présente dans le fichier
Trêve de bavardage, voilà quelques exemples :
Liste les tags de tous les fichiers audio contenus dans <path> et dont le nom de fichier contient leur titre (c'est à dire le tag TITLE).
Liste les tags de tous les fichiers audio contenus dans <path> et dont le numéro de piste commence par 1 et fini par 3.
Liste les tags de tous les fichiers audio contenu dans <path> et dont le numéro de piste commence par 1, puis ensuite ceux dont le numéro de piste fini par 3.
Ne conserve que les tags ALBUM, ARTIST, TRACK et TITLE pour tous les fichiers de <path>.
Substitue dans le tag TITLE tous les caractères doublés (aa, bb, 00 etc.) par un seul de ces caractères.
On voit sur ce dernier l'apparition de références arrières liées au expressions régulières.
Voilà voilà, si vous voulez avoir une vue plus exhaustive des capacité du script, je vous encourage à utiliser l'option
Il reste encore quelques fonctionnalités que j'aimerais implémenter, mais je pense qu'en l'état c'est déjà un outil très polyvalent.
Si vous voulez vous amuser à le tester, j'ai déjà créer un paquet sur l'AUR, il suffit d'un
Tout retour est évidemment plus que le bienvenu !
Si vous avez des questions concernant l'utilisation du script, n’hésitez pas non plus à les poser.
Ayant eu du mal à trouver un éditeur de tag pour les fichiers audio en ligne de commande qui me convienne, j'ai décidé d'en créer un.
Autant en terme d'interface graphique je trouve mon bonheur, notamment du côté de puddletag, autant du coté des CLI c'est assez limité...
J'ai bien essayé
taffy
et usetaglib
, mais même si ils font bien leur boulot, ils se limitent à modifier les tags d'un seul fichier audio à la fois.On peut bien sur faire des scripts avec ça, mais pour gérer quasi-automatiquement une bibliothèque musicale qui se respecte un peu, ça deviens vite compliqué, et ça demande donc pas mal d’expérience en programmation.
Le but était donc de créer une commande permettant de modifier en une ligne les meta-données audio d'un grand nombre de fichiers.
Après une petite semaine, je pense être arrivé à quelque chose de fonctionnel et permettant déjà de faire pas mal de chose.
Le tout est écrit en python en utilisant le module
pytaglib
qui propose des bindings pour la librairies TagLib
.La plupart des options d’édition de tags permettent l'utilisation d'expressions régulières pour permettre une grande flexibilité.
Pendant ce temps, j'ai déjà implémenté des opérateurs permettant de :
- faire une sélection de fichier sur les tags via des expression régulière notamment
- lister les tags
- supprimer des tags
- ajouter/modifier des tags de manière brute ou en fonction des tags déjà présent ou du chemin du fichier (dossier, nom de fichier etc.)
- faire de la substitution au sein des tags, encore une fois de manière brute ou en utilisant les informations déjà présente dans le fichier
Trêve de bavardage, voilà quelques exemples :
yaate --match="%filename%=%title%" --list <path>
Liste les tags de tous les fichiers audio contenus dans <path> et dont le nom de fichier contient leur titre (c'est à dire le tag TITLE).
yaate --match="%track%=^1; %track%=3$" --list <path>
Liste les tags de tous les fichiers audio contenus dans <path> et dont le numéro de piste commence par 1 et fini par 3.
yaate --match="%track%=^1" -l --match="%track%=3$" -l <path>
Liste les tags de tous les fichiers audio contenu dans <path> et dont le numéro de piste commence par 1, puis ensuite ceux dont le numéro de piste fini par 3.
yaate --keep="%album%;%artist%;%track%;%title%" <path>
Ne conserve que les tags ALBUM, ARTIST, TRACK et TITLE pour tous les fichiers de <path>.
yaate --sub="%title%=(.)\\1/\\1" <path>
Substitue dans le tag TITLE tous les caractères doublés (aa, bb, 00 etc.) par un seul de ces caractères.
On voit sur ce dernier l'apparition de références arrières liées au expressions régulières.
Voilà voilà, si vous voulez avoir une vue plus exhaustive des capacité du script, je vous encourage à utiliser l'option
--help
.Il reste encore quelques fonctionnalités que j'aimerais implémenter, mais je pense qu'en l'état c'est déjà un outil très polyvalent.
Si vous voulez vous amuser à le tester, j'ai déjà créer un paquet sur l'AUR, il suffit d'un
yaourt -S yaate
.Tout retour est évidemment plus que le bienvenu !
Si vous avez des questions concernant l'utilisation du script, n’hésitez pas non plus à les poser.