В этой статье хотелось бы рассказать о том, как можно управлять на данный момент наиболее популярными мультимедиа центрами — KODI (XBMC) и Dune HD, с помощью HTTP GET запросов.
Здесь будут описаны только самые наиболее востребованные запросы, которыми можно управлять удаленно (например: в пределах домашней WiFi сети или при соответствующих настройках роутера из сети INTERNET), не только с помощью заранее написанных скриптов, но и простым вводом их в адресную строку браузера. Все запросы описывать здесь я не буду, так как: во — первых, многие из них используются крайне редко, а во — вторых, для этого есть полная документация. Данные запросы можно использовать так же, для управления мультимедиа центрами, при построении систем «Умный Дом», чем я собственно говоря и воспользовался при разработке своей.
Вот собственно те самые запросы:
1. Запуск файла на воспроизведение.
Ссылки на файлы должны быть прямыми, то есть явно указывать на воспроизводимый файл или поток, ссылки с Youtube таковыми не являются, поэтому работать не будут. Как получить прямую ссылку на ролик с Youtube можно посмотреть здесь.
Здесь и далее по тексту:
LOGIN — логин установленный в настройках KODI (Веб-сервер -> Разрешить управление Kodi по HTTP).
PASSWORD — пароль установленный в настройках KODI (Веб-сервер -> Разрешить управление Kodi по HTTP).
URL — сетевой или интернет адрес воспроизводимого ресурса.
ip-address — IP адрес устройства в домашней или INTERNET сети.
Если настроить Dune HD так, что при нажатии кнопки POWER на пульте он уходит в режим Standby, то при запросе на воспроизведение файла он включится автоматически.
2. Регулировка громкости.
Устанавливаем уровень громкости на значение 35.
3. Перемотка на определенную позицию.
Внимание! Для 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. Пауза/Воспроизведение.
5. Следующий трек в плейлисте.
Для Dune HD нет явно указывающей команды, поэтому переход к следующему треку осуществляется путем эмуляции нажатия кнопки пульта. В документации коды команд написаны через одно место, поэтому я сделал файл с правильными командами, который можно взять тут.
6. Предыдущий трек в плейлисте.
Не забываем в запросах к 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
Здесь будут описаны только самые наиболее востребованные запросы, которыми можно управлять удаленно (например: в пределах домашней 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
Комментарии (7)
pehat
23.12.2015 02:52Передавать логин и пароль в незашифрованном виде как часть урла? Серьёзно?
arbuzmaster
23.12.2015 12:41На практике к XBMC можно подключиться и передавать запросы вообще без авторизации — нужно просто подключиться telnet — ом к порту 9090.
NorthDakota
Это называется REST API
arbuzmaster
Спасибо! Буду теперь знать, как это называется по научному! :-)
GamePad64
GET, который изменяет состояние сервера не является stateless и не соответствует REST. Так что это-таки просто HTTP.