воскресенье, 22 ноября 2009 г.

Linux: UTF-8 и ID3v2 в музыкальной коллекции.

Когда музыкальная коллекция становиться довольно объемной и в ней набирается большое количество разношерстных файлов, возникает желание все это дело как то привести к общему виду. Уже довольно давно, я собирался взяться за уборку в своей папке music и вот руки наконец таки дошли.
В первую очередь меня беспокоили абракадабры в плай листах. Хотелось чтобы все было красиво и по русски. Во вторую: ID3v1, которые в последнее время все чаще стали игнорироваться некоторыми плеерами.
Я уж было собирался взяться, за написание матерого перлового скрипта, и уже совсем было полез искать для него подходящие модули... но по ходу поиска модулей, я попал как раз туда куда было мне надо, хотя и не туда, куда хотел. Как оказалась все уже давно написано(хотя если подумать это не "оказалось", это всегда так есть, но не всегда про нашу честь ;) ).
mid3iconv скрипт на питоне, заточенный специально под наши цели, расспрастраняется в составе пакета mutagen ( http://code.google.com/p/mutagen/ ), базируется на id3iconv (http://www.cs.berkeley.edu/~zf/id3iconv/), очень прост в использовании и эффективен в работе.


Usage: mid3iconv [OPTION] [FILE]...

Mutagen-based replacement the id3iconv utility, which converts ID3 tags from
legacy encodings to Unicode and stores them using the ID3v2 format.

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-e ENCODING, --encoding=ENCODING
Specify original tag encoding (default is UTF-8)
-p, --dry-run Do not actually modify files
--force-v1 Use an ID3v1 tag even if an ID3v2 tag is present
--remove-v1 Remove v1 tag after processing the files
-q, --quiet Only output errors
-d, --debug Output updated tags

Files are updated in-place, so use --dry-run first.


Для нас конечно ключевым является флаг --encoding . Большая часть музыки попадает ко мне с id3 тегами в кодировке windows-cp1251, я укажу ее. О другой части файлов с id3 тегами utf-8, беспокоится не нужно, с ними ничего не случится. Если у вас имеются файлы в кодировке koi8-r вам соответственно придется вычленить их из общего числа и перекодировать отдельно. Другой флаг который заслуживает внимания это --remove-v1 , архи нужная в нашем деле вещь, после перезаписи в id3 версии 2 , в случаи если этот флаг установлен, id3 версии 1 удаляется.
Умные люди из Интернетов используют эту утилиту таким образом:

find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1

Суть думаю ясна без комментариев. Запускаем из каталога в котором необходимо перекодировать id3 , и очень быстро, получаем нужный результат.
С задачей которая изначально стояла передо мной я справился так быстро, что мне даже поскучнело... ...В плеере красивые русские буковки... ни одного файла со старыми id3v1... так... с кодировками и тегами покончено и что дальше?

А дальше мы займется перекодированием файлов формата mp3 в его свободный аналог ogg, но это будет завтра... ;) а сейчас пора спать :)

Комментариев нет: