[Из песочницы] Управление мультимедиа центрами с помощью HTTP GET запросов

В этой статье хотелось бы рассказать о том, как можно управлять на данный момент наиболее популярными мультимедиа центрами — KODI (XBMC) и Dune HD, с помощью HTTP GET запросов.

Здесь будут описаны только самые наиболее востребованные запросы, которыми можно управлять удаленно (например: в пределах домашней WiFi сети или при соответствующих настройках роутера из сети INTERNET), не только с помощью заранее написанных скриптов, но и простым вводом их в адресную строку браузера. Все запросы описывать здесь я не буду, так как: во — первых, многие из них используются крайне редко, а во — вторых, для этого есть полная документация. Данные запросы можно использовать так же, для управления мультимедиа центрами, при построении систем «Умный Дом», чем я собственно говоря и воспользовался при разработке своей.

Вот собственно те самые запросы:

1. Запуск файла на воспроизведение.

Ссылки на файлы должны быть прямыми, то есть явно указывать на воспроизводимый файл или поток, ссылки с Youtube таковыми не являются, поэтому работать не будут. Как получить прямую ссылку на ролик с Youtube можно посмотреть здесь.

  • 1.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «id»:»1», «method»: «Player.Open», «params»:{«item»:{«file»:»URL»}}}
  • 1.2 Dune HD — http://ip-address/cgi-bin/do? cmd=launch_media_url&media_url=URL


Здесь и далее по тексту:

LOGIN — логин установленный в настройках KODI (Веб-сервер → Разрешить управление Kodi по HTTP).
PASSWORD — пароль установленный в настройках KODI (Веб-сервер → Разрешить управление Kodi по HTTP).
URL — сетевой или интернет адрес воспроизводимого ресурса.
ip-address — IP адрес устройства в домашней или INTERNET сети.

Если настроить Dune HD так, что при нажатии кнопки POWER на пульте он уходит в режим Standby, то при запросе на воспроизведение файла он включится автоматически.
2. Регулировка гоомкости.

  • 2.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «id»:»1», «method»: «Application.SetVolume», «params»:{«volume»: 35}}}
  • 2.2 Dune HD — http://ip-address/cgi-bin/do? cmd=set_playback_state&volume=35


Устанавливаем уровень громкости на значение 35.

3. Перемотка на определенную позицию.

  • 3.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «method»: «Player.Seek», «params»:{«playerid»:0, «value»: 50}, «id»:»1»}
  • 3.2 Dune HD — http://ip-address/cgi-bin/do? cmd=set_playback_state&position=50


Внимание! Для KODI значение 50 указывается в процентах, а для Dune HD в секундах так как такой функции у него нет (я сделал так — написал небольшой скрипт, который получает полную продолжительность трека, и путем нехитрых вычислений устанавливал значение уже в процентах).

Есть еще один нюанс — здесь и в дальнейшем для KODI предварительно нужно получать значение «playerid», это id активного плеера.

Получается он при помощи следующего запроса: http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «method»: «Player.GetActivePlayers», «id»:»1»}, если мне не изменяет память, то порядок примерно такой: для аудио — «playerid»:0, для видео — «playerid»:1, для фото — «playerid»:2. Значения должны быть типа integer, то есть целые числа без кавычек.

4. Пауза/Воспроизведение.

  • 4.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «id»:»1», «method»: «Player.PlayPause», «params»:{«playerid»:0}}
  • 4.2 Dune HD — http://ip-address/cgi-bin/do? cmd=set_playback_state&speed=0 — пауза/ 256 — воспроизведение


5.Следующий трек в плейлисте.

  • 5.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «id»:»1», «method»: «Player.GoTo», «params»:{«playerid»:0, «to»: «next»}} -
  • 5.2 Dune HD — http://ip-address/cgi-bin/do? cmd=ir_code&ir_code=E21DBF000


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

6. Предыдущий трек в плейлисте.

  • 6.1 KODI (XBMC) — http://LOGIN: PASSWORD@ip-address:8080/jsonrpc? request={«jsonrpc»:»2.0», «id»:»1», «method»: «Player.GoTo», «params»:{«playerid»:0, «to»: «previous»}} -
  • 6.2 Dune HD — http://ip-address/cgi-bin/do? cmd=ir_code&ir_code=B649BF00


Не забываем в запросах к KODI (XBMC) ставить свой «playerid».

Существует еще масса разного вида запросов, для данных мультимедиа центров, при помощи которых можно реализовать практически любой функционал. В итоге можно получить например вот такой web интерфейс управления, на котором будут отображаться все действия с пультом управления, или оснастить мультимедиа центр возможностью голосового поиска такого контента, как музыка или видео. Форматы ответов мультимедиа центров: KODI (XBMC) — JSON формат, Dune HD — XML формат. Управление можно реализовать на различных языках программирования, поддерживающих посылку HTTP GET запросов, и возможность работы с JSON, я для этих целей использовал всем известный php (curl, json_decode и для DuneHD simplexml_load_file).

Используемые материалы


JSON-RPC_API/v6 Kodi/XBMC
DUNE IP CONTROL DOCUMENTATION

© Geektimes