Narzędzie wiersza poleceń do wyświetlania tagów ID3 w systemie Linux

23

Chcę napisać skrypt, który manipuluje znacznikami ID3 plików mp3. Potrzebuję narzędzia, które odczytuje znaczniki i wysyła je w formacie do odczytu maszynowego. Na przykład, jeśli chcę, aby wyświetlał tylko tytuł, wówczas wyświetla tytuł, nic więcej. Próbowałem różnych narzędzi, takich jak id3lub eyeD3, ale można ich używać tylko do pisania znaczników lub wyświetlania ich w formacie czytelnym dla człowieka. Oczywiście mógłbym po prostu filtrować te dane wyjściowe sed, ale wydaje mi się to niepotrzebnie skomplikowane.

petersohn
źródło

Odpowiedzi:

30

Możesz użyć exiftoolpolecenia z libimage-exiftool-perlpakietu, które umożliwia odczyt (i zapis) metadanych z plików multimedialnych, w tym plików mp3. Może wyświetlać dane w różnych formatach, w tym klucz-wartość, json, xml i formaty zdefiniowane przez użytkownika. Możesz wybrać listę tylko określonych tagów.

% 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
źródło
+1 „sudo port install p5.16-image-exiftool” - zabierze Cię do Maca z MacPorts ... Wystarczy „exiftool-5.16 / Volumes / MMED / music / Esperanza \ Spalding / Esperanza / 02. \ I \ Know \ You \ Know.mp3 ”i wyplujesz wszystkie metadane! Dzięki!
mimoralea,
+1 Właśnie miałem taką samą potrzebę, ale do dźwięku FLAC. Działa jak urok. Szkoda, że ​​nazwa programu nie daje żadnej wskazówki co do pełnego zakresu jego możliwości ...
9

id3infow id3lib wyświetla tagi ID3 w formacie, który jest bardzo prosty do analizy przez maszynę.

Ignacio Vazquez-Abrams
źródło
1
Strona podręcznika mówi jednak: Obsługiwane są tylko wersje ID3 1.0 i 1.1.
Calimo
4

Chciałbym spojrzeć na tagging mutagen biblioteki dla Pythona, który zawiera podstawowe Scriptable narzędzia wiersza polecenia, mid3v2 . Chociaż wyjście mid3v2 jest przede wszystkim czytelne dla człowieka, --list-rawopcja może być sama w sobie odpowiednia:

$ 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'])

Uwaga: to narzędzie wyświetla tylko tagi ID3 , a nie dodatkowe atrybuty pliku MP3, takie jak exiftool . Ale jeśli chciałeś tylko określonego znacznika, prosty grep dla zmiennej złapie to za ciebie:

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

Jeśli mid3v2 nie jest dla Ciebie wystarczające i nie masz nic przeciwko Pythonowi, możesz napisać własne narzędzie, aby połączyć się z biblioteką Mutagen i bezpośrednio odczytywać znaczniki.

quack quixote
źródło