В колонках играет - Breaking Benjamin - So ColdНастроение сейчас - Ура-утреннееДело было так. Запускаю свой любимый медиа-плеер Kaffeine (который, если будет так жрать ресурсы скоро будет заменен на AmaroK), кидаю туда папку с альбомом "Изгой" многоуважаемой "Алисы" а подлый кофейный элемент мне вместо названия альбома/песни - кракозябры. Ну и закручинился я тогда. Конечно, после 2 лет использования Linux я на всякое насмотрелся и с некоторой вероятностью даже могу бегло читать эти самые кракозябры (не могу лишь KOI-8, отображенную как UTF-8), но заниматься этим постоянно, как говорят герои Зощенко, "скушно".
Вылазка в диалог настроек, а потом, что греха таить, и в конфигурационный файл не дала никаких полезных знаний и, тем более, возможностей отучить Kaffeine выражаться. Тогда был взят Великий Админский Бубен, и с ним на перевес владелец оного был отправлен по всем известному адресу - google.ru. После копания в выдаче по запросу "кодировка тегов" были обнаружены и прочитаны сотни комментариев к релизу Amarok за номером 1.4.9, который отчего-то перестал понимать русские теги. А выяснилось все быстро - товарищи разработчики посчитали перекодировку тегов (которая, судя по отзывам и работала-то криво) костылем и решили строго следовать стандарту. А по стандарту IDv3 в тегах должен применяться Unicode и только! Но тут конечно руку приложила M$ и с её нелегкого почина теги стали записываться в кодировке, соответствующей системной. Более того, WinAMP 5, Foobar2k и Windows a Player не умеют правильно отображать теги, записанные в UTF8, т.е. не соответствуют стандартам. Выход вроде бы был найден на тех же форумах - утилита EasyTAG. Я скачал и установил её (из исходников - дружно благодарим mandriva за скудность репозиториев), но эта, с позволения сказать, тварь мне испортила половину тегов моей любимой группы "Ария" неправильно распознав изначальную кодировку. Продолжать общение с EasyTAG я не захотел и вытянул из интернета скромный java-бинарник id3iconv-0.2.1.jar, написанный неким китайцем, у которого возникли аналогичные проблемы. Ну а т.к. Unicode - универсальная кодировка, то я вполне мог прикрутить его и к моей повозке. Синтаксис команды следующий:
java -jar id3iconv-0.2.1.jar -e <изначальная кодировка> <mp3-файлы>
Как вы уже догадались, работает из консоли. Зато быстро. Но тут такая проблемка, хоть и малая - у меня папка Music занимает 10ГБ и является полностью рассортированной по исполнителям и альбомам коллекцией, просто указать список файлов для перекодирования я не могу. Что же я сделал?
Вспомним, что shell в Linux считается практически скриптовым языком и я могу создавать сколь угодно сложные
Как вы конструкции из команд. Например, я могу задать поиск всех mp3-файлов в нужной папке и перенаправить выдачу программы на вход той же самой id3iconv. Например, так
find /media/sda5/Music/ -name "*.mp3" >java -jar id3iconv-0.2.1.jar -e Cp1251
Но это не срабатывает - что-то там я с синтаксисом перемудрил. В итоге решение просто и элегантно: записываем список в файл и натравливаем на него id3iconv.
find /media/sda6/Music -name "*.mp3" > listmp3.txt
Теперь в файле listmp3.txt, куда мы перенаправили выдачу утилиты find, мы имеем список файлов с полными путями.
Дело за малым:
java -jar id3iconv-0.2.1.jar -e Cp1251 < listmp3.txt
И все. Кидаю любую папку из коллекции в Kaffeine - имею пристойные теги =)