Я хочу написать скрипт, который манипулирует тегами ID3 mp3-файлов. Мне нужен инструмент, который читает теги и выводит его в формате в машиночитаемом формате. Например, если я хочу, чтобы он выводил только заголовок, он выводит заголовок, ничего больше. Я пробовал различные инструменты , такие как id3
или eyeD3
но они могут быть использованы только для записи меток или выводить их в воспринимаемом формате. Конечно, я мог бы просто отфильтровать этот вывод через sed
, но мне он кажется излишне сложным.
3 ответа
Вы можете использовать команду 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)"
}]
id3info
в id3lib выводит теги ID3 в формате, который очень прост для машинного анализа.
Я хотел бы взглянуть на библиотеку тегов Mutagen для Python, которая включает в себя базовый инструмент командной строки с поддержкой сценариев , 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 и напрямую читать или манипулировать тегами.