Skip to content

tmradio/tmradio-client-gtk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Функции

  • Проигрывание потока.
  • Перезапуск проигрывания при обрыве связи.
  • Настраиваемый адрес потока.
  • Доступ к покдастам. Пока выводится простой список с возможностью открыть страницу эпизода и скачать файл. В будущем планируется добавить проигрывание прямо из программы.

Благодарности

  • [email protected] (Хакимов Ирик): за патчи
  • iconshock.com: за иконку
  • defaulticon.com (Interactivemania): за иконки для интерфейса на Tk.

Интерфейс

Обычно используется интерфейс на GTK.

Когда использование GTK невозможно, используется альтернативный интерфейс на Tk. Выбрать его принудительно можно при запуске клиента с ключом --tk или установив переменную окружения TMCLIENT=tk.

Настройка

Настройки хранятся в файле ~/.tmradio-client.yaml, самые важные из них редактируются прямо в самом клиенте. Полный список используемых параметров:

  • chat_log (str), имя файла для сообщений из чата.
  • debug (bool), установка аналогична запуску с --debug.
  • highlight_bgcolor (str), цвет упоминаний (фон).
  • highlight_color (str), цвет упоминаний (текст).
  • highlight_re (str), выражение для подсветки в чате.
  • jabber_bot (str), jid бота радиостанции.
  • jabber_chat_nick (str), предпочитаемый ник в чате.
  • jabber_chat_room (str), адрес чата.
  • jabber_id (str), логин в джаббере.
  • jabber_password (str), пароль к джабберу, закодирован в base64.
  • log (str), имя файла для отладочных сообщений.
  • notify_icon (str), иконка для всплывающих уведомлений, по умолчанию "audio-volume-medium".
  • notify_title (str), заголовок всплывающих уведомлений, по умолчанию "TMRadio Client".
  • stream_uri (str), URL потока для проигрывания.
  • twitter_search (str), строка для поиска новостей в твиттере.
  • volume (float), текущая громкость.
  • socket_timeout (int), предельное время ожидания соединения с джаббер-сервером, в секундах, по умолчанию 2.

Как работает jabber

Для максимальной эффективности работа вынесена в отдельный тред. Взаимодействовать с интерфейсом должен только один поток, поэтому взаимодействие джаббера и интерфейса минимизировано. Входящие события, о которых сообщает jabber, бывают следующими:

  • Стала известна новая информация о текущей дорожке.
  • Пришло сообщение в чат.

Исходящие сообщения:

  • Сообщение в чат.
  • Голосование за дорожку.
  • Редактирование свойств дорожки.

Всё исходящее — это обычные текстовые сообщения. Они однотипные, достаточно простой очереди, защищённой блокировками. Входящие сообщения чата — примерно то же самое, только в обратном направлении.

Информация о дорожках может выдаваться как очередь пар ключ-значение, то есть в интерфейсный поток будет приходить набор примерно таких данных:

("track_id", "3892")
("artist", "Mobil")
("title", "The Winter's Story")
("labels", "calm electronic instrumental music")

Для надёжности (атомарности) можно передавать полученные данные сразу списком, чтобы исключить не очень вероятную, но возможную ситуацию, когда пользователь отправляет изменённое название дорожки, в этот момент меняется свойство track_id, заголовок устанавливается для другой дорожки.

Материал для внеклассного чтения

About

The GTK+ Client (an MP3 streaming player with an XMPP chat)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages