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

в 15:56, , рубрики: Песочница, метки: , , , , ,

В этой статье хотелось бы рассказать о том, как можно управлять на данный момент наиболее популярными мультимедиа центрами — 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

Автор: Абитура

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js