[Из песочницы] Управление мультимедиа центрами с помощью 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