用于在Linux下列出ID3标签的命令行工具


24

我想编写一个脚本来处理mp3文件的ID3标签。我需要一个工具来读取标签,并以一种机器可读的格式将其输出。例如,如果我希望它仅输出标题,那么它将输出标题,而没有其他输出。我尝试了类似id3或的其他工具eyeD3,但是它们只能用于编写标签或以人类可读的格式输出它们。当然,我可以通过过滤输出sed,但对我来说似乎不必要地复杂。

Answers:


30

您可以使用软件包中的exiftool命令,该命令libimage-exiftool-perl使您可以从多媒体文件(包括mp3)读取(和写入)元数据。它可以输出为多种格式,包括键值,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)"
}]

+1“ sudo端口安装p5.16-image-exiftool”-使您可以在Mac上使用MacPorts ...只是“ exiftool-5.16 / Volumes / MMED / music / Esperanza \ Spalding / Esperanza / 02。\ I \知道\ You \ Know.mp3”,您将吐出所有元数据!谢谢!
mimoralea

+1我只是有同样的需求,但需要FLAC音频。像魅力一样工作。太糟糕了,程序名称没有暗示其可能的全部范围……


5

我将研究用于Python 的Mutagen标记库,其中包括一个基本的可编写脚本的命令行工具mid3v2。尽管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'])

请注意,此工具仅列出ID3 标签,而不列出MP3文件的其他属性,例如exiftool。但是,如果您只想要一个特定的标签,则只需一个简单的grep即可作为您的标签名:

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

如果mid3v2本身还不能满足您的需求,并且您对Python感到满意,则可以编写自己的工具来与Mutagen库连接并直接读取或操作标签。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.