karapuz 31.03.2009 07:21
How-to`s — Amarok и русские буквы
Многие сталкивались с проблемой отображения кириллических тегов в Amarok. В этой статье я опишу два наиболее подходящих на мой взгляд способа решения этой проблемы.Корень проблемы
Скажу сразу, Amarok тут не при чем. Дело в том, что большинство музыки, которую вы добываете на торрентах, покупаете на дисках и пр. содержит теги в кодировке cp1251. Это кодировка принята по умолчанию для отображения кириллицы в Windows. Данный подход давно устарел и все Linux дистрибутивы перешли на универсальную кодировку UTF-8.
Если глянуть еще глубже, то можно увидеть, что для чтения и отображения тегов amarok использует библиотеку taglib. Вот она-то и не хочет отображать теги в кодировке cp1251 корректно. Оно и понятно, зачем, если вся система работает с UTF-8?. В итоге вместо русских тегов в amarok мы видим каракули. Но не стоит отчаиваться, решение есть и не одно!
Решение первое, не универсальное, но простое
Суть решения в следующем. Раз Amarok не хочет отображать теги в кодировке cp1251, пусть теги будут в UTF-8. Но как быть, если я хочу поделиться музыкой с Windows пользователем, теперь у него будут каракули? Нет, не будут. Это тоже решаемо.
И так, нам нужно всего лишь перекодировать теги из cp1251 в UTF-8. На мой взгляд лучше всего это сделать при помощи утилиты easytag. Для корректного отображения тегов в Linux и в Windows я использую настройки, показанные на скриншоте.

Решение второе, универсальное, но сложней
Первое решение имеет один недостаток. Как быть если я храню музыку на CD дисках, и она там в кодировке cp1251? Заставить taglib корректно отображать кодировку cp1251. Для этого уже давно существует проект rusxmms коим я успешно пользуюсь.
И так по порядку.
1. Качаем следующие пакеты:
librcd
librcc
taglib-csa6
taglib-1.5
2. Распаковываем
tar -xvf librcd-0.1.11.tar.bz2
tar -xvf librcc-0.2.6.tar.bz2
tar -xvf taglib-csa6.tar.bz2
tar -xvf taglib-1.5.tar.gz
3. Устанавливаем librcc и librcd. Для этого переходим в каталог с распакованным архивом и делаем следующее
./autogen.sh
./configure --prefix=/usr
make && sudo make install
*Тут нужно внимательно смотреть, чем закончилось выполнение команд ./configure --prefix=/usr и make. Если ошибкой, то нужно смотреть в чем ошибка. К сожалению универсального решения я подсказать не могу, но скорей всего не хватает какого-то пакета. Если что-то пойдет не так, пишите в комментариях, будем разбираться. Ах да, убедитесь в наличии пакетов gcc, make и automake. Вроде ни чего не забыл.*
4. Патчим taglib. Для этого заходим в каталог с распакованным taglib-csa6 и находим там файл taglib-1.5-ds-rusxmms.patch или с похожим название, главное чтоб были в названии слова taglib-1.5 и patch. Копируем этот файл в каталог с распакованным taglib-1.5. Далее выполняем следующие команды
patch -p1 < taglib-1.5-ds-rusxmms.patch
aclocal
automake
autoconf
./configure --prefix=/usr
make && sudo make install
5. Если все прошло без ошибок, то запускаем Amarok и наслаждаемся результатом.
Статья подготовлена в рамках акции "Неделя помощи новичкам".
UPD1: Чуть не забыл. После всего сделанного, как способ первый, так и второй, необходимо заново просканировать коллекцию в Amarok.
На сайте rusxmms в разделе Download есть собранные бинарники для тех кто не хочет патчить и собирать taglib ручками. Для пользователей opensuse 11.1 есть репозиторий, который содержит все вышеперечисленные пакеты. Если кто-нибудь располагает информацией о репозиториях для других дистрибутивов, не стесняйтесь, пишите в комментариях, добавлю в статью.
UPD2: Нашел репозиторий rusxmms для Ubuntu.
Для добавления делаем следующее
sudo gedit /etc/apt/sources.list
Добавляем туда строку
deb http://rusxmms.sourceforge.net/ubuntu/rusxmms dapper main
Сохраняем и закрываем. Добавляем gpg-подпись для этого репозитория
sudo wget http://rusxmms.sf.net/ubuntu/rusxmms/key.gpg -O - | sudo apt-key add -
Обновляем списки пакетов и устанавливаем taglib
sudo apt-get update
sudo apt-get install libtag1c2a
UPD3: Для Arch Linux в community лежат откомпилированные пакеты librcd-0.1.11-1, librcc-0.2.6-1 и taglib-rcc-1.5-1. Устанавливаем командой
sudo pacman -S taglib-rcc.
За информацию спасибо stanislav

+ 0 -
+1. Сразу столкнулся с этой проблемой в начале моего linux пути. easytag очень удобна.
для файла с виндовой кодировкой юзаю mutagen вместо easytag
find `pwd` -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v
а решение второе, универсальное ещё не использовал за ненадобностью
find `pwd` -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v
а решение второе, универсальное ещё не использовал за ненадобностью
+1
тоже пользуюсь этим однострочником, очень быстро, нежели открывать какой-то gui.
тоже пользуюсь этим однострочником, очень быстро, нежели открывать какой-то gui.
Через ГУЙ можно заодно к CDDB обратиться и недостающие теги добавить + плюс переименовать треки по маске. По-хорошему, это всё потом в плеере делать придётся - но не во всех есть нужный функционал.
Им можно просканировать большую библиотеку с русскими названиями(cp1251), а cddb не находит мои треки
в Arch Linux на данный момент в community лежат:
librcd-0.1.11-1
librcc-0.2.6-1
taglib-rcc-1.5-1
librcd-0.1.11-1
librcc-0.2.6-1
taglib-rcc-1.5-1
Можно тогда поправить до такого вида: sudo pacman -S taglib-rcc
А librcd и librcc подтянутся как зависимости.
А librcd и librcc подтянутся как зависимости.
Если честно, всегда пользовался первым способом. Как раз таки потому, что второе решения для меня менее универсально, чем первое: я хочу получать нормальные теги сразу же, как запустил новый дистриб линукса.
Прежде всего хочу сказать, первое решение звучит как «снять флажок записи ID3v1.x» — это единственное отличие от дефолтов.
<dummy mode on>
Во-вторых, у меня после снятия этого флажка теги остались прежними. Что делать?
<dummy mode off>
О втором методе не скажу ничего — не юзал и не собираюсь.
<dummy mode on>
Во-вторых, у меня после снятия этого флажка теги остались прежними. Что делать?
<dummy mode off>
О втором методе не скажу ничего — не юзал и не собираюсь.