- Проигрывание потока.
- Перезапуск проигрывания при обрыве связи.
- Настраиваемый адрес потока.
- Доступ к покдастам. Пока выводится простой список с возможностью открыть страницу эпизода и скачать файл. В будущем планируется добавить проигрывание прямо из программы.
- [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, бывают следующими:
- Стала известна новая информация о текущей дорожке.
- Пришло сообщение в чат.
Исходящие сообщения:
- Сообщение в чат.
- Голосование за дорожку.
- Редактирование свойств дорожки.
Всё исходящее — это обычные текстовые сообщения. Они однотипные, достаточно простой очереди, защищённой блокировками. Входящие сообщения чата — примерно то же самое, только в обратном направлении.
Информация о дорожках может выдаваться как очередь пар ключ-значение, то есть в интерфейсный поток будет приходить набор примерно таких данных:
("track_id", "3892")
("artist", "Mobil")
("title", "The Winter's Story")
("labels", "calm electronic instrumental music")
Для надёжности (атомарности) можно передавать полученные данные сразу списком, чтобы исключить не очень вероятную, но возможную ситуацию, когда пользователь отправляет изменённое название дорожки, в этот момент меняется свойство track_id, заголовок устанавливается для другой дорожки.