web-dev-qa-db-ja.com

LinuxでID3タグをリストするためのコマンドラインツール

Mp3ファイルのID3タグを操作するスクリプトを書きたいのですが。タグを読み取り、機械で読み取り可能な形式で出力するツールが必要です。たとえば、タイトルのみを出力する場合は、タイトルのみを出力します。 id3eyeD3などのさまざまなツールを試してみましたが、これらのツールは、タグを記述したり、人間が読める形式で出力したりする場合にのみ使用できます。もちろん、その出力をsedでフィルタリングすることもできますが、不必要に複雑に思えます。

24
petersohn

libimage-exiftool-Perlパッケージのexiftoolコマンドを使用すると、mp3などのマルチメディアファイルからメタデータを読み取り(および書き込み)できます。 Key-Value、json、xml、ユーザー定義形式など、さまざまな形式で出力できます。指定したタグのみをリストするように選択できます。

% 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)"
}]
30
user4358

id3info in id3lib は、マシン解析が非常に簡単な形式でID3タグを出力します。

基本的なスクリプト可能なコマンドラインツールmid3v2を含むPythonの Mutagenタグ付けライブラリ を調べます。 mid3v2の出力は主に人間が読める形式ですが、--list-rawオプション自体が適切な場合があります。

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

このツールはID3tagsのみをリストし、exiftoolのようなMP3ファイルの追加属性はリストしないことに注意してください。ただし、特定のタグのみが必要な場合は、タグ名の単純なgrepで取得できます。

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

mid3v2だけでは不十分で、Pythonに慣れている場合は、独自のツールをスクリプトに記述して、Mutagenライブラリとやり取りし、タグを直接読み取ったり操作したりできます。

5
quack quixote