Лечение кракозябров в названиях музыкальных коллекций mp3
У нас с Юлей общая коллекция музыки в mp3, которую мы собирали, наверное, лет пятнадцать - наверное, столько времени, сколько существует сам формат MP3. Когда мы стали жить вместе, две фонотеки были объединены в одну, сложены для удобства доступа в папочку на сервере, и эта папочка сейчас занимает, наверное, гигабайт под двести.
Проблемы с кодировкой у нас начались практически одновременно, причем у каждого по-своему. Юля переехала на мак и стала слушать музыку через iTunes, а я сгрузил часть музыки к себе на телефон. И там, и там обнаружилась одна и та же проблема: русские названия отображались в виде кракозябров.
Ничего удивительного в этом, в общем-то, нет. Мы всю жизнь слушали музыку через Winamp, который по умолчанию считает, что названия в ID3-тегах написаны в виндовой кодировке cp1251 (и чаще всего оказывается прав). Но со временем появляется все больше программ и устройств, которые предполагают, что все названия написаны в Unicode или utf8, и ни про какие cp1251 , а также cp866 и koi8-r не знают. Да и, откровенно говоря, правильно делают - нечего поддерживать этот зоопарк морально устаревших и несовместимых друг с другом кодировок.
Соответственно, возник вопрос, как быстро и безболезненно перекодировать все ID3-теги в юникод. Самое лучшее решение, которое мне удалось найти - это скрипт под названием id3iconv. Он не задает лишних вопросов, кроме самых очевидных:
- название папочки, где лежат mp3;
- название исходной кодировки.
Запуск - проще не бывает. К архиву прилагается cmd-шник, который умеет искать по вложенным подпапкам, а также самостоятельно задает исходную кодировку в cp1251. Поэтому для запуска мне достаточно было бы открыть виндовую консоль и написать:
id3iconv.cmd S:\Audio
После чего скрипт начнет планомерно обшаривать заданную папку и ее подпапки на предмет mp3-файлов, которые будут перекодированы из cp1251 в Unicode. Если скрипт встретит файлы, которые уже в правильной кодировке - он их просто пропустит, так что опасности испортить то, что уже и так работает, нет.
Все бы хорошо, но в моем случае это не очень удачное решение, поскольку S: - это удаленный сетевой диск. На прогон туда-сюда двухсот гигабайт по беспроводной сетке ушла бы неделя. Но чем еще хорош id3iconfv - так это тем, что он написан на Java, благодаря чему его можно запускать в любой среде. Поэтому я запустил скрипт прямо на сервере. Там синтаксис был чуть посложнее, но все равно это одна строчка:
find /mnt/shared/Audio -iname '*.mp3' -print0 | xargs -0 java -jar id3iconv-0.2.1.jar -e cp1251
Оставил все это крутиться на ночь, и утром вся фонотека была уже в Юникоде.
Комментарии
ksch
Пн, 2012-05-14 01:43
Link
Re: Лечение кракозябров в названиях музыкальных коллекций mp3
Здорово, интересно, спасибо :)
Хотя у меня сейчас русской музыки почти нет
myx
Пн, 2012-05-14 08:35
Link
Re: Лечение кракозябров в названиях музыкальных коллекций mp3
А расскажи, что из русского осталось? У меня ее тоже сравнительно немного, но все же есть (как нетрудно догадаться по скриншотам) :)
ksch
Пн, 2012-05-14 15:33
Link
Re: Лечение кракозябров в названиях музыкальных коллекций mp3
На плеере только Ария %)
Я слушаю сейчас в основном Рамштайн большую часть времени