Пользователь
0,0
рейтинг
13 марта 2010 в 02:04

Администрирование → Решаем проблемы с кодировкой в mp3

Не секрет, что многие, до сих пор, прописывают тэги во всяких cp1251 и KOI-8R — после чего их не понимают ни телефоны, ни плееры (некоторые) и с проигрывателями под linux бывает много проблем.
Больше всего неприятно, то что при загрузке новой музыки, ты не можешь быть уверен в какой кодировке идут тэги и вот добавив в свой проигрыватель ты обнаруживаешь нечитаемые символы вместо названия трека, исполнителя и альбома. А ведь оно еще и на last.fm скроблится в таком виде.

Можно использовать EasyTag и прочие редакторы тэгов.
Но чаще всего, мне надо только поправить кодировку, а тэги прописаны верно.

До этого, я всегда пользовался простым shell скриптом, но решил немного облегчить задачу.

Вот решение:


Нам понадобится пакет python-mutagen
sudo aptitude install python-mutagen

создадим shell скрипт
$ touch mp3.sh
$ nano mp3.sh


и добавим в него следующее:
#!/bin/sh

FILE=`zenity --file-selection --directory --title="Выберите путь к крякозябрам"`
case $? in
0)
echo "Выбран \"$FILE\".";;
1)
echo "Файл не выбран.";;
-1)
echo "Файл не выбран.";;
esac
cd "$FILE" || exit;
(find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e KOI8-R --remove-v1; find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1)|zenity --progress --pulsate --auto-close --text "идет процесс" --title "Меняем кодировку"
zenity --info --text="теперь у Вас православный UTF"



Необходимо дать права на выполнение скрипта
chmod u+x mp3.sh

Вот и всё, можете запускать ($ sh mp3.sh) и указать папку где требуется исправить кодировку.

Перед вами предстанет диалоговое окно с выбором каталога, в котором надо навести порядок — остается выбрать и нажать «ок»

Для удобства, я предлагаю сделать еще пару движений:
sudo mv mp3.sh /usr/bin/mp3

И теперь в любой момент, мы нажимаем заветный alt+F2 и набираем mp3
Можно и кнопку запуска переделать.

P.S. Это первый опыт в написании shell скрпта, для себя — немного облегчить жизнь.
Если кому-то еще пригодится — буду рад.
Наверняка этот код не совершенен.
Буду признателен за любые советы. Например как сделать окно с выбором директории на QT :-)
@xjunkiex
карма
0,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (36)

  • +2
    Полезная вещь. Спасибо.

    Для выбора директории, ИМХО, проще всего использовать tcl/tk.
    FILE=`echo 'wm withdraw .; puts [tk_chooseDirectory -title {Select a directory} -mustexist 1]; exit' | wish8.4`

    В вашей системе wish может называться wish, wish8.4, wish8.5 или ещё как-то так.

    Кроме того, я бы советовал проверять, случилось ли cd:
    cd "$FILE" || exit;

    Иначе можно накосячить :-)

    Перед exit-ом можно выдавать GUI сообщение
    echo 'wm withdraw .; tk_messageBox -icon error -type ok -message {Invalid dir.} -title {Abort}; exit' | wish8.4
    • +1
      cd "$FILE" || exit; добавил, а вот tcl/tk какой-то «вырвиглаз» :)
  • +1
    Тоже раньше пользовался очень похожим самописным скриптом, потом (вроде даже здесь) посоветовали sourceforge.net/projects/tag2utf/, более удобным и отточенным показался.
  • +1
    Спасибо Вам. Вы сподвигли меня разобраться с кракозябрами в своей коллекции музыки. Но Ваш способ у меня почему то не сработал. Зато помог вот этот рецепт: forum.ubuntu.ru/index.php?topic=5356.msg41046#msg41046

    «Перекодировал все кириллические теги в ID3v2.4 utf-8 с помощью тулзы mid3iconv из пакета python-mutagen.
    find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1»
    • 0
      Очень странно почему этот способ не сработал, там как раз используется mid3iconv для KOI8-R и cp1251
      find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e KOI8-R --remove-v1; find -iname '*.mp3' -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
      • 0
        mp3.sh: 7: Syntax error: word unexpected (expecting ")")
        • 0
          paste.ubuntu.com/394596/ попробуйте так, должно сработать.
        • 0
          Попробуйте запустить в bash вместо sh
          • 0
            mp3.sh: line 7: ошибка синтаксиса около неожиданной лексемы `"$FILE"'
            mp3.sh: line 7: `cd "$FILE";'
            • 0
              Я поправил в топике — вы оттуда пробовали или с paste.ubuntu.com — сейчас не открывается, может там что-то неверно.
              Попробуйте в 7строке заменить на cd "$FILE" || exit;
              • 0
                sh mp3.sh
                Выбран "/home/pysik/Музыка/2006 — Летние Дни".
                mp3.sh: 14: Syntax error: ";;" unexpected

                Скрипт использую с paste.ubuntu.com/394596/
  • +3
    В /usr/bin как-то неправославно. Лучше положить в /usr/local/bin или даже в домашней директории создать каталог bin, добавить его в $PATH и положить файл в него.
  • +1
    Ещё со времён обладания Sony Ericcson я прознал про мегатехнологию.
    В iTunes можно сконвертировать теги в формат версии 2.4, а он в юникоде.
    • +1
      но Itunes не выпускают для linux
      • +1
        Ну это совет для залётных виндосоводов, чтоб не вздумали, что их проблема не решаема без bash, или хотя бы cygwin :)
        • 0
          Есть методы проще, всё таки айтюнс слишком огромен для таких задач.
          UTF16 Encoder подойдет очень хорошо elfse.com/2009/11/02/utf16-encoder.html
    • 0
      Хм, не подскажите, где именно это сделать?
      • 0
        Правой кнопкой мыши на файл (или файлы, если выделено несколько) и четвёртый сверху пункт «Конвертировать id3 теги...»
  • 0
    чтобы использовать qt-like диалог можно попробовать kdialog
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    > Можно использовать EasyTag и прочие редакторы тэгов. Но чаще всего, мне надо только поправить кодировку, а тэги прописаны верно.

    И что мешает в EasyTag просто поправить кодировку? :)

    В любом случае, раз уж все равно сам пишешь скрипт, эту функциональность оформить в виде Nautilus script.
    • 0
      Я раньше так же пользовался, но у него уж слишком много настроек любая неправильная комбинация, которых часто не работает. Все эти вкладочки и галочки оказались не нужны когда я начал использовать mutagen.
  • 0
    У меня две ОС: Ubuntu 9.10 и Windows 7. Все тэги музыкальных файлов в UTF8. Сама аудиоколлекция на NTFS-разделе. И никаких проблем с прослушиванием :)
    • +2
      вам повезло, я когда скачиваю чтонибудь новое, то ~70% приходится в ср1251
      • 0
        Да, большую часть загруженного приходится «приводить в порядок». Спасает EasyTAG. Но я заметил, что всё чаще и чаще попадается музыка с тэгами в UTF8, что не может не радовать.
        • 0
          Я не поручусь за 11й, но 12й WMP по дефолту сохраняет теги в UTF-16, с которым все Linux-плееры нормально работают. MS взялись за ум, похоже :)
  • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    еще есть mp3unicode.sourceforge.net
  • –2
    Программка MP3tag — www.mp3tag.de/en/ решает все проблемы.
  • 0
    >как сделать окно с выбором директории на QT
    QFileDialog::getExistingDirectory(), если это ещё актуально.
  • 0
    >KOI-8R
    facepalm.jpg
  • 0
    а после этого а amarok'e треки теперь перестанут вопросоками отображаться? :)
    • 0
      именно!
    • 0
      Насколько я помню, Amarok и так отлично читал все тэги ;)
      • 0
        1.4 — да, отлично читал. А вот 2 — нет, если я не ошибаюсь, там эта проблема стала актуальной в связи с переходом на новую версию taglib
  • 0
    Неужели я единственный у кого куча мп3 в кой8-р и у кого не сработал ни один из перечисленных способов? Т.е. после
    mid3iconv -e KOI8-R --remove-v1 ./*.mp3
    выводятся строчки «Updating», но все мп3 файлы в текущей папке показывают стандартную койф-р последовательность в audacious, amarok, easytag. Последний, кстати, тоже их не исправляет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.