Outil en ligne de commande pour répertorier les balises ID3 sous Linux

24

Je veux écrire un script qui manipule les balises ID3 des fichiers mp3. J'ai besoin d'un outil qui lit les balises et les génère dans un format lisible par machine. Par exemple, si je veux qu'il ne produise que le titre, alors il sort le titre, rien d'autre. J'ai essayé différents outils comme id3ou eyeD3, mais ils ne peuvent être utilisés que pour écrire des balises ou pour les produire dans un format lisible par l'homme. Bien sûr, je pourrais simplement filtrer cette sortie sed, mais cela me semble inutilement compliqué.

petersohn
la source

Réponses:

30

Vous pouvez utiliser la exiftoolcommande du libimage-exiftool-perlpackage qui vous permet de lire (et d'écrire) des métadonnées à partir de fichiers multimédias, y compris des mp3. Il peut sortir dans une variété de formats, y compris les formats valeur-clé, json, xml et définis par l'utilisateur. Vous pouvez choisir de répertorier uniquement les balises spécifiées.

% exiftool -json 09\ -\ \(Tom\ Waits\)\ -\ Walk\ Away.mp3
[{
  "SourceFile": "09 - (Tom Waits) - Walk Away.mp3",
  "ExifToolVersion": 7.82,
  "FileName": "09 - (Tom Waits) - Walk Away.mp3",
  "Directory": ".",
  "FileSize": "2.5 MB",
  "FileModifyDate": "2008:07:12 13:58:52+01:00",
  "FileType": "MP3",
  "MIMEType": "audio/mpeg",
  "MPEGAudioVersion": 1,
  "AudioLayer": 3,
  "AudioBitrate": 128000,
  "SampleRate": 44100,
  "ChannelMode": "Stereo",
  "MSStereo": "Off",
  "IntensityStereo": "Off",
  "Emphasis": "None",
  "ID3Size": 1678,
  "Title": "Walk Away",
  "Album": "Dead Man Walking",
  "Genre": "OST",
  "Track": 9,
  "Artist": "Tom Waits",
  "Year": "",
  "Comment": "",
  "Duration": "02:42 (approx)"
}]
nagul
la source
+1 "sudo port install p5.16-image-exiftool" - vous permet de démarrer dans un mac avec MacPorts ... Juste "exiftool-5.16 / Volumes / MMED / music / Esperanza \ Spalding / Esperanza / 02. \ I \ Know \ You \ Know.mp3 "et vous obtenez toutes les métadonnées crachées! Merci!
mimoralea
+1 Je viens d'avoir le même besoin, mais pour l'audio FLAC. A fonctionné comme un charme. Dommage que le nom du programme ne donne aucune indication quant à l'étendue complète de ses possibilités ...
9

id3infodans id3lib affiche les balises ID3 dans un format simple à analyser par la machine.

Ignacio Vazquez-Abrams
la source
1
Cependant, la page de manuel indique ce qui suit: Seules les versions ID3 1.0 et 1.1 sont prises en charge.
Calimo
5

Je regarderais dans la bibliothèque de marquage Mutagène pour Python, qui comprend un outil de ligne de commande scriptable de base, mid3v2 . Bien que la sortie de mid3v2 soit principalement lisible par l'homme, l' --list-rawoption peut convenir en soi:

$ mid3v2 --list-raw 09_Walk\ Away.mp3
Raw IDv2 tag info for 09_Walk Away.mp3:
TDRC(encoding=3, text=[u'1996'])
TIT2(encoding=3, text=[u'Walk Away'])
TRCK(encoding=3, text=[u'9'])
TPE1(encoding=3, text=[u'Tom Waits'])
TALB(encoding=3, text=[u'Dead Man Walking'])
TCON(encoding=3, text=[u'Soundtrack'])

Notez que cet outil ne répertorie que les balises ID3 , pas les attributs supplémentaires du fichier MP3 comme exiftool . Mais si vous ne vouliez qu'une balise particulière, un simple grep pour la variable saisira cela pour vous:

$ mid3v2 --list-raw 09_Walk\ Away.mp3 | grep TIT2
TIT2(encoding=3, text=[u'Walk Away'])

Si mid3v2 ne vous suffit pas en soi et que vous êtes à l'aise avec Python, vous pouvez créer un script pour votre propre outil pour interfacer avec la bibliothèque Mutagen et lire ou manipuler directement les balises.

Quack Quichotte
la source