Получить теги MP3 ID3 (V2), используя id3v2 - PullRequest
4 голосов
/ 13 марта 2011

У меня небольшие затруднения с пониманием формата тегов V2 ID3. Я просто хочу получить тег «Genre» ID3 файла MP3, но утилита id3v2 возвращает больше информации, чем мне требуется, и я не понимаю, что представляют собой эти данные.

Например, я использую следующий код bash:

id3v2 -l "$FILE" | grep -i "content type"

Что возвращает что-то в строках:

TCON (Content type): Jazz (8)

Действительно, я просто хочу знать, безопасно ли для меня предполагать, что это всегда будет формат, и, таким образом, безопасно ли мне делать следующее?:

id3v2 -l "$FILE" | grep -i "content type" | sed "s/^.*: //" | sed "s/ (.*$//"

(что приведет к "джазу".)

Я пытаюсь найти лучший способ получить тег ID3 «Жанр». Большое спасибо за любые предложения.

1 Ответ

3 голосов
/ 13 марта 2011

Я думаю, что можно с уверенностью предположить, что строка будет иметь префикс TCON, поэтому я бы предпочел поискать это (это будет также безопасно для i18n).

id3v2 -l "$FILE" | sed -n '/^TCON/s/^.*: //p' | sed 's/ (.*//'

(запускать не нужноgrep)


От /usr/share/doc/id3lib-3.8.3/doc/id3v2.3.0.txt

TCON

The 'Тип содержимого ', который ранее хранился только как однобайтовое числовое значение, теперь является числовой строкой.Вы можете использовать один или несколько типов, как это делал ID3v1.1, или, поскольку список категорий невозможно поддерживать с точными и актуальными категориями, определите свой собственный.

Ссылки на жанры ID3v1 могут бытьсделанный, в качестве первого байта, введите «(», за которым следует номер из списка жанров (приложение А.) и заканчивающийся символом «)».За этим необязательно следует уточнение, например «(21)» или «(4) Eurodisco».Несколько ссылок могут быть сделаны в одном кадре, например "(51) (39)".Если уточнение должно начинаться с символа "(", его следует заменить на "((", например "((я могу выяснить любой жанр)" или "(55) ((я думаю ...)".новые типы контента определены в ID3v2 и реализованы так же, как и типы контента цифр, например "(RX)".

 RX  Remix
 CR  Cover
...