Radio Tray. Решаем проблему с кодировкой

Установил я не давно апплет для радио — Radio Tray. Приятно вписывается в интерфейс, хорошо сделана буферизация(нет заиканий при прослушивании радиостанций), можно не открывая программу(да её и открыть то нельзя, только настройки что бы выбить радиостанции) менять громкость и включать/отключать радио, но вот кириллица отображалась кроказябрами. Ещё пара слов о Radio Tray и решение проблемы с кодировкой под катом.

Установить последнюю версию Radio Tray в ubuntu можно введя следующие 3 команды:

sudo add-apt-repository ppa:eugenesan/ppa
sudo apt-get update
sudo apt-get install radiotray

При наведении мышки на значок программы можно менять громкость(колёсико мышки), а так же вылезает всплывающая подсказка.

Клик мышки позволяет выбирать радиостанции и включать/выключать радио(это, кстати, можно делать с мультимедийных клавиш)

Перевод немного корявенький, но жить можно. В настройках можно вбивать радиостанции или свои собственные плей листы.

Настройки

При новом треке будет появляться всплывающее уведомление согласно теме настроенной в системе.

Ну а теперь главное.

Кодировка в Radio Tray

Открываем текстовым редактором файл StateMediator.py

sudo gedit /usr/share/pyshared/radiotray/StateMediator.py

Находим в нём строчку def notifySong(self, data): после неё будет строка newMetadata = str(data) за место неё пишем:

newMetadata = str(data).encode('latin-1').decode('cp1251').encode('utf8')

Перезапускам Radio Tray — кодировка в порядке.

Добавлено:

Если горит индикатор сигнала, но звука нет можно попробовать открыть радиостанцию через стандартный плеер(Например totem), скорее всего он напишет, что надо установить дополнительные модули… устанавливаем их и перезапускам radio tray.


Для windows тоже существует множество программ, которые позволяют слушать онлайн радио. Например, radiocent. Эта программа позволяет не только прослушивать радиостанции, которых много изначально, но и с лёгкостью записывать поток прямо с эфира. Приятно, что программа на русском языке и бесплатна.

Поделись статьёй с друзьями

Или просто поиграйся с кнопочками

13 комментариев на «Radio Tray. Решаем проблему с кодировкой»

  1. Nic:

    У меня почему-то не хочет работать =( ubuntu 11.04 с unity.
    Т.е вообще в трей не вставляется, я из dash тоже запускал, все равно не работает. Помогите..

  2. Nic:

    И PPA добавил, и кэш обновил. Выполнил команду добавления всего в белый лист gsettings set com.canonical.Unity.Panel systray-whitelist «[‘all’]». Все равно почему-то не работает.

  3. NayvaN:

    Спасиб за заметку, ворой раз уже по ней на радиотрей кодировку русскую ставлю!

  4. Cadaver:

    обновил radiotray до 0.7.1 — опять слетела кодировка, а в StateMediator.py этих строк нет. Где порыть?

    • Sega:

      поправить кодировку отображения можно так:
      Проверьте настроена ли у вас русская локаль с кодировкой cp1251:

      locale -a | grep ru_RU

      В выводе команды должна присутствовать строка:

      ru_RU.cp1251

      Если нет, то её необходимо добавить:

      sudo gedit /var/lib/locales/supported.d/ru

      и добавляем строку:

      ru_RU.CP1251 CP1251

      и перекомпилируем:

      sudo locale-gen

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

      sh -c "export LC_ALL=ru_RU.CP1251 ; radiotray %U"

    • ycsus:

      в том же файле, в самом низу
      def on_song_changed(self, data):
      ...
      if('title' in data.keys()):
      self.context.title = data['title']

      у титла добавляем енкоде по тому же принципу:

      if('title' in data.keys()):
      self.context.title = data['title'].encode('latin-1').decode('cp1251').encode('utf8')

    • ycsus:

      только у меня радиотрей лежит в /usr/share/radiotray
      и для того что бы в всплывающих было тоже без кракозябр нуна в плагине подправить
      /usr/share/radiotray/plugins/NotificationPlugin.py
      после обьявления notify вставить декодирование мессаги

      def notify(self, title, message):
      message = message.encode('latin-1').decode('cp1251').encode('utf8')

  5. Cadaver:

    Спасибо, локаль установлена, все остальное тоже вроде как понятно. Но это способ, пригодный для любой программы с подобными проблемами и он вовсе не так изящен, как первый. Пока откатился на 0.6.4.
    Вообще, RadioTray приглянулся достаточно уверенным отображением метаданных (исполнитель, песня), что, к примеру, в vlc допилено явно не до конца.
    Еще раз спасибо!
    С Новым годом!

  6. alex:

    А как добавить новые, например, русские станции? Есть URL-ы у кого нить?

  7. TolyAka:

    Программа вылетает с ошибкой:
    'latin-1' codec can't encode characters in position 1-6: ordinal not in range(256)

    XUbuntu 12.04

Добавить комментарий