Mp3ファイルのID3タグを操作するスクリプトを書きたいのですが。タグを読み取り、機械で読み取り可能な形式で出力するツールが必要です。たとえば、タイトルのみを出力する場合は、タイトルのみを出力します。 id3
やeyeD3
などのさまざまなツールを試してみましたが、これらのツールは、タグを記述したり、人間が読める形式で出力したりする場合にのみ使用できます。もちろん、その出力をsed
でフィルタリングすることもできますが、不必要に複雑に思えます。
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)"
}]
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ライブラリとやり取りし、タグを直接読み取ったり操作したりできます。