Est-il possible de lire les balises mp3 d'un fichier depuis le shell? Quelque chose comme:
mp3tags MyFile.mp3 author
devrait sortir le tag auteur d'un fichier mp3.
la source
Est-il possible de lire les balises mp3 d'un fichier depuis le shell? Quelque chose comme:
mp3tags MyFile.mp3 author
devrait sortir le tag auteur d'un fichier mp3.
Vous pouvez également utiliser ffprobe
ce qui fait partie de ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Si vous ne voulez pas d'autres informations, telles que la longueur de la piste, etc., vous pouvez combiner le résultat avec grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Ou pour n'obtenir que l'auteur:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Vous pouvez sélectionner d'autres balises en les séparant par une virgule, telle que format_tags=title,album
.
Je voulais rechercher un mot clé dans tous les fichiers mp3 d'un dossier. Le dossier contenait 486 fichiers. Il était donc intéressant de savoir laquelle des solutions mentionnées ici était la plus rapide. Voici la boucle que j'ai utilisée:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE 's/^=== TIT2 \([^)]*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
Remarques:
lltag
et mp3info
ne trouve pas de titre, car les fichiers que j'utilisais avaient des tags ID3v2, voir le commentaire de @ s-prasanth: Comment lire les tags mp3 dans un shell?eyeD3
est problématique à utiliser par programmation, car il utilise des codes de couleur (gras).eyeD3
et aussi id3v2
(mais seulement pour les tags ID3 v1) renvoient le titre et l'artiste sur la même ligne, ce qui complique encore les choses; Par conséquent getTitleEyed
, getTitleId3
retournez parfois le titre et l'artiste. Par conséquent, ne collez pas ces fonctions.getTitleId3 ne fonctionnera que pour les tags ID3 v2, car il id3v2
a des formats différents pour les tags ID3v1 et ID3v2, c'est-à-dire
Title : Artist:
vs. ID3v2:
TIT2 (Title/songname/content description):
Comme le seul programme de ces 5 eyeD3
imprime un avertissement rouge pour deux des fichiers:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Il semble que ces deux fichiers ont ID3v1, parce que ces deux fichiers sont les seuls où lltag
et mp3info
peuvent obtenir un titre. Je me demande s'il s'agit d'un bogue, eyeD3
car aucun autre programme mentionné ici n'a de problème avec ces fichiers ...
Résultats (temps réel):
Program | Version | Time / s
----------+------------+-----------
exiftool | 10.25 | 49.5 ± 0.5
lltag | 0.14.5 | 41 ± 1.0
ffprobe | 3.1.3-1+b3 | 33 ± 0.5
eyeD3 | 0.6.18 | 24 ± 0.5
id3info | 3.8.3 | 4.2 ± 0.1
id3v2 | 0.1.12 | 2.9 ± 0.1
id3tool | 1.2a | 1.7 ± 0.1
mp3info | 0.8.5a | 1.4 ± 0.1
Ici, le gagnant est gagnant id3tool
(mp3info est plus rapide, mais ne fonctionne pas avec ID3 v2).
id3v2
est également assez rapide, mais la getTitleId3
fonction aurait besoin d’être ajustée pour fonctionner également avec les balises ID3v1, ce qui peut, au pire, le ralentir de 2 fois.
id3info
dans votre comparaison?ffmpeg
a un autre avantage: cela fonctionne avecaac
/m4a
fichiers. Les autres outils ne semblent pas (ou savez-vous le contraire?). Je suggérerai également de rechercher dans saFORMAT
section, pour éviter les cas où un flux a aussi untitle
etcffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
. : .exiftool
ouffprobe
. L'outil le plus spécialisé pour ce travail seraitmetaflac --list
issu duflac
package. Pour oggexiftool
fonctionne aussi, mais il y a aussivorbiscomment -l
duvorbis-tools
paquet. Bizarrementvorbiscomment
etmetaflac
ne peut pas être interchangé, même si FLAC et OGG ont tous deux des métadonnées Vorbis Coment?Ok, j'ai trouvé un programme par moi-même. Il s'appelle mp3info et est installé par
Pour obtenir des balises mp3 uniques à partir d'un fichier, il faut appeler
ce qui donne l'artiste du fichier. Le% a signifie que l’on veut obtenir l’artiste et qu’il existe d’autres clés pour les autres tags.
la source
mp3info
. Vous voudrez peut-être regarderid3v2
- Il peut éditer / ajouter la v2 et afficher les v1 et v2. Si vous n'aimez pas la façon dont les balises sont affichées, vous pouvez écrire un script qui exécuteid3v2
et traite correctement la sortie.-R
flag avecgrep
pour obtenir la sortie spécifiée.Only ID3 versions 1.0 and 1.1 are supported
.Vous pouvez utiliser eyed3 . Tout d'abord, depuis un terminal, installez:
Ensuite, lancez:
Combinez cela avec
grep
pour obtenir des balises spécifiques sur une ligne.(pour enlever tous les tags mp3, voir ICI )
la source
eyeD3
pas êtreeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.Je préfère utiliser id3v2, tapez juste
id3v2 -l somefile.mp3
. Vous pouvez également consulter la page de manuel id3v2 pour une utilisation plus spécifique.la source
mid3v2
à cause du manque de support Unicode. Également la dernière mise à jour d'id3v2 était en 2013 .Vous pouvez essayer exiftool (lire et écrire des méta-informations dans des fichiers).
Voici un exemple de la commande:
la source
Découvrez
lltag
si vous recherchez une solution prenant en charge plus que le format mp3 / ID3.Installez-le avec:
pour voir toutes les balises avec: (
-S
est pour show)pour afficher certaines balises avec:
la source
Betteraves
Vous pouvez commencer avec ce screencast et le guide de prise en main
Installez soit:
Aussi:
exiftool -v3 *.mp3
mid3v2
à partir de (python-mutagen
package) ( au lieu deid3v2
, la dernière mise à jour date de 2013 !)id3
- Éditeur pour les tags ID3 (différent de cet id3 )id3tool
- Editeur de ligne de commande pour les tags id3id3ren
- id3 tagger et renamerla source