четверг, 26 февраля 2009 г.

Редактирование тегов mp3 в Linux (Debian)

Решил объединить две статьи о редактировании id3-тегов в mp3-файлах, попутно обновив часть перекодирование тегов. Раньше я выполнял перекодирование id3-тегов из CP1251 в Unicode с помощью самосборного deb-пакета mp3unicode. Через некоторое время я нашёл ей более подходящую альтернативу в репозитории Debian.

Введение

У меня есть довольно большая коллекция музыки в формате mp3. Естественно большую коллекцию нужно каким-то образом упорядочивать, очень помогают в этом теги id3.

Если я граблю новый компакт-диск в mp3-файлы, в первую очередь в простановке тегов может помочь cd-text - информация, которая может находиться уже на самом диске. Затем, если cd-text на диске не обнаружен, стоит попытаться воспользоваться функцией поиска информации на сервере cddb. При наличии неполной информации в тегах можно воспользоваться сервером MusicBrainz для получения недостающих полей.

Если я копирую mp3-файлы у друзей, перед занесением в свою коллекцию, я проверяю наличие тегов. Бывает, что теги неполные, поэтому лучше запросить поиск информации на сервере cddb. Бывает, однако, что русскоязычных исполнителей в cddb найти не удаётся, поэтому приходится довольствоваться имеющимися тегами.

Теги id3 бывают трёх версий:
  • id3v1 - содержит поля "исполнитель", "альбом", "год", "композиция", "комментарий", "жанр",
  • id3v1.1 - содержит дополнительное поле "номер дорожки",
  • id3v2 - содержит гибкую структуру полей, позволяет добавлять собственные поля. (Собственно широко распространены две подверсии - id3v2.3 и id3v2.4, но для этой статьи это не важно).
Теги idv1 и id3v1.1 представляют собой практически одно и то же. Эти теги по стандарту поддерживают хранение информации только в кодировке ASCII, то есть поддерживает хранение только латинских букв, цифр и знаков препинания. Однако требования стандарта многие плееры и редакторы id3-тегов игнорируют, и считают что в тегах допустимы любые символы из системной 8-байтной кодировки. Естественно при смене системной кодировки символы вне диапазона ASCII будут отображаться неправильно. Поскольку на территории России широко распространена операционная система Windows, в большинстве случаев системной 8-байтовой кодировкой является cp1251. Становится понятно, что большинство mp3-файлов имеют теги в кодировке cp1251.

В Linux некоторые плееры позволяют указывать 8-байтную кодировку для idv3-тегов и для отображения информации в списке воспроизведения перекодируют текст на лету. Другие плееры занимают принципиальную позицию и строго придерживаются стандарта. Они отображают правильно только текст в ASCII-кодировке.

Однако выход из этой ситуации есть. Теги id3v2 поддерживают хранение текста в кодировке Unicode, и поэтому проблем с кодировками у них нет.

Так вот, когда ко мне попадают файлы с тегами id3v1 в кодировке cp1251, и для этих файлов не удалось найти информацию на сервере cddb, я могу воспользоваться программой, которая перекодирует id3v1-теги в теги id3v2.

Перекодирование id3-тегов из CP1251 в Unicode

Рецепт, видимо, подсмотрел здесь: http://vnaum.com/stuff/mp3tags.html Хотя не уверен, может быть взял из другого места.

Для этого ставим пакет mutagen, позволяющий редактировать различные виды музыкальных тегов:
# aptitude install python-mutagen
Переходим в каталог с музыкой, скопированной у друзей, пользующихся Windows. Ищем в текущем каталоге файлы по расширению mp3, для каждого из найденных файлов меняем кодировку, удаляем теги версии 1, записываем теги версии 2:
$ find . -iname "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d --remove-v1
Описание опций:
-d - выводить на экран исправленные теги,
-e [codepage] - исходная кодировка тегов,
-remove-v1 - удалить исходные теги версии 1.

Я перепробовал несколько программ для редактирования тегов, в том числе EasyTag и Kid3. Эти программы хорошо справляются с ASCII-текстом, но при использовании символов из Unicode, они обе сходят с ума и начинают прописывать в теги всякую чушь. К сожалению с их помощью я успел загубить теги в mp3-треках нескольких исполнителей, поэтому пользоватьcя в дальнейшем ими я не собираюсь.

Редактирование id3-тегов из графического интерфейса

Поиск в репозитории программ для редактирования id3-тегов из графического интерфейса дал следующие результаты:

1. Kid3 - использует KDE, в etch совершенно не пригоден для редактирования id3v2-тегов, хотя соответствующая форма для редактирования id3v2 имеется. В lenny научился понимать теги id3v2.3 и id3v2.4, вполне пригоден для редактирования. Имеется лишь одно небольшое неудобство - отсутствие дерева для навигации по файловой системе, заточен в первую очередь на индивидуальное редактирование тегов отдельных треков.

2. EasyTag - использует GTK, в etch проставлял id3v2-теги так, что некоторые программы их не понимали, в lenny не проверял, но скриншот сделал:

3. TagTool - использует GTK, совершенно кривое поделие,

4. Пакет mp3info-gtk и утилита gmp3info из него - подвержена той же болезни, что и её консольный собрат - поддерживает только id3v1 и id3v1.1.

Состоит из двух раздельных окон. В первом окне можно выбрать mp3-файл (только один), который будем редактировать. После выбора файла нужно нажать кнопку "Ok".

После этого первое окно закроется, откроется второе, в котором можно отредактировать теги выбранного файла. После закрытия второго окна программа завершается и для редактирования тегов другого файла нужно запускать её заново.

5. Ex Falso - использует GTK+ и библиотеку mutagen, программа отличная, пользуюсь с удовольствием. Все необходимые функции имеются.

Несколько особняком от графических утилит для редактирования id3-тегов стоит программа Picard, предназначенная для поиска информации о mp3-треках по базе данных MusicBrainz. Для собственно редактирования id3-тегов она малопригодна.

Сначала нужно добавить в программу mp3-файлы и объединить их в кластер, если предполагается, что файлы составляют альбом.

После этого можно начать процесс сканирования. Программа найдёт группу логически связанных друг с другом файлов, наиболее подходящую к файлам из кластера. При поиске учитывается множество факторов: длительности треков, названия файлов и папок, имеющиеся теги, информация из других файлов кластера. Программа оценивает эвристическими методами схожесть конкретного файла с файлом, информация о котором уже есть в базе и выдаёт наиболее точно соответствующую запись из базы MusicBrainz:

Для редактирования новых тегов, как я уже заметил выше по тексту, я пользуюсь программой Ex Falso.

Это GTK+ программа, поэтому выглядит она не очень красиво, но зато прекрасно умеет проставлять теги, которые одинаково правильно читаются в большинстве программ. Во всяком случае amaroK читает их прекрасно.

Установить программу лучше вместе с рекомендованными зависимостями:
# aptitude install --with-recommends exfalso
При этом также будут установлены плагины для получения информации из баз данных CDDB и MusicBrainz, которыми я успешно пользуюсь. Есть ещё довольно большое количество плагинов, один из которых может пригодиться и вам.

При обновлении с Etch на Lenny в Ex Falso пропал плагин, умеющий запрашивать информацию из MusicBrainz. Вместо него можно воспользоваться программой Picard, которую можно установить следующей командой:
# aptitude install picard
Выбору риппера компакт-дисков я посвятил отдельную статью CD-рипперы в Linux. Для прослушивания музыки пользуюсь в основном Amarok.

8 комментариев:

drakulavich комментирует...

Про Ex Falso слышу впервые, надо будет протестировать. Меня всегда выручал и выручает EasyTag. Он, конечно, тяжеловат, но свое дело знает :-)

Max комментирует...

Большое спасибо за подробную статью. Особенно полезным оказался раздел про перекодирование тегов - мучался я с ними немеряно, пробовал и разные проги, и практически вручную ковырялся - все никак толком не получалось. Теперь все ОК)))

Анонимный комментирует...

спасибо за обзор, долго искал редактор тегов, пользовался tag&rename под вайном, потом easytag , но не хватало парочки опций, что делало ее не удобной, а ex falso самое то...где она раньше была :)

Анонимный комментирует...

спасибо огромное. Ex Falso великолепен

Анонимный комментирует...

Если разобраться, то лучьше KID3 ничего нет. особенно для массового редактирования тегов.

morbo комментирует...

>Если разобраться, то лучьше KID3 ничего нет. особенно для массового редактирования тегов.

Ваши слова против моих:

Если разобраться, то лучше ExFalso ничего нет. Особенно для массового редактирования тегов.

Если не согласны, приведите пару примеров, когда Kid3 удобнее ExFalso.

Oleg комментирует...

mid3iconv не исправляет тэг Comment

для полноты обзора надо заметить, что есть еще один пакет https://sourceforge.net/projects/tag2utf/ , но тот не исправляет даже Composer.

Ogust Biller комментирует...

Спасибо за обзор. Ничтоже сумняшеся установил ExFalso и вуаля!