Skip to main content

Python remote control for Kodi server

Project description

Python remote control for Kodi

License: MIT PyPI - Python Version

Author Denis Machard d.machard@gmail.com
License MIT
PyPI https://pypi.org/project/kodi-remotecontrol/

This is a Python remote control for Kodi with minimal but sufficient basic controls.

This remote control acts as a websocket Gateway of the UDP Event Server API for more reactivity.

Table of contents

Installation

pip install kodi_remotecontrol

Start remote control

As prerequisite, go to System/Settings/Network/Services and activate the two following options

  • Allow programs on other systems to control Kodi
  • Allow control of Kodi via HTTP

After that, you can start the remote control and provides the address of your kodi server.

kodi_remotecontrol --desthost=10.0.0.200

Other available options:

kodi_remotecontrol --help
usage: kodi_remotecontrol [-h] [--destport DESTPORT] [--desthost DESTHOST]
                        [--bindport BINDPORT] [--bindhost BINDHOST]

optional arguments:
  -h, --help           show this help message and exit
  --destport DESTPORT  destination kodi port default=9777
  --desthost DESTHOST  destination kodi host default=127.0.0.1
  --bindport BINDPORT  bind on port default=8081
  --bindhost BINDHOST  bind on host default=0.0.0.0

Available buttons

To interact with the remote control, you need to use a websocket client and send the following JSON commands to the address ws://<remotecontrol_ip>:8081.

UI Navigation

{"button": "press_up"} // press on up button
{"button": "press_down"} // press on down button
{"button": "press_left"} // press on left button
{"button": "press_right"} // press on right button
{"button": "press_back"} // press on back button
{"button": "press_enter"} // press on enter button
{"button": "press_ctxmenu"} // display contextual menu
{"button": "press_playlist"} // display playlist
{"button": "press_logoff"} // press on logoff button

Player interaction

{"button": "press_play"} // press on play button
{"button": "press_stop"} // press on stop button
{"button": "press_pause"} // press on pause button
{"button": "press_previous"} // press on previous button
{"button": "press_next"} // press on next button
{"button": "press_osd"} // display OSD

Subtitle selection

{"button": "press_subtitle"} // toggle subtitle

Audio track selection

{"button": "press_language"} // toggle language

Websocket client

Basic demo

<html>
  <head>
      <title>RemoteControl demo</title>
      <style type="text/css">
          .buttons {
              font-size: 1em;
              display: flex;
              justify-content: center;
          }
          .button {
              padding: 2rem;
              border: medium solid;
              min-height: 1em;
              min-width: 1em;
              cursor: pointer;
              user-select: none;
          }
      </style>
  </head>
  <body>
    <div class="buttons">
      <div class="play button">Play</div>
      <div class="pause button">Pause</div>
    </div>
    <script>
      var websocket = new WebSocket("ws://localhost:8081/");

      var play = document.querySelector('.play')
      var pause = document.querySelector('.pause')

      play.onclick = function (event) {
        websocket.send(JSON.stringify({button: 'press_play'}));
      }
      pause.onclick = function (event) {
        websocket.send(JSON.stringify({button: 'press_pause'}));
      }
    </script>
  </body>
</html>

Systemd service

Example of system service file for Centos7

vim /etc/systemd/system/kodi_remotecontrol.service

[Unit]
Description=Kodi remote control Service
After=network.target

[Service]
ExecStart=/usr/local/bin/kodi_remotecontrol --desthost=10.0.0.200
Restart=on-abort
Type=simple
User=root

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start kodi_remotecontrol
systemctl status kodi_remotecontrol
systemctl enable kodi_remotecontrol

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kodi_remotecontrol-0.6.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

kodi_remotecontrol-0.6.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file kodi_remotecontrol-0.6.0.tar.gz.

File metadata

  • Download URL: kodi_remotecontrol-0.6.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for kodi_remotecontrol-0.6.0.tar.gz
Algorithm Hash digest
SHA256 a38b78206353bae6d707a9854cb6831e5265274ae083d1257acd781a0085faf2
MD5 bf2e8f0c92335f953ab032dba6058380
BLAKE2b-256 db6494f8533d10c43598f61bcb3b2eeff9b0ad36a4e3309500a1ac73bf5fcbca

See more details on using hashes here.

File details

Details for the file kodi_remotecontrol-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: kodi_remotecontrol-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for kodi_remotecontrol-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b883583763c5aab54355012df9b5c85b3a5f3e99349ca302e8f352f28cdb862
MD5 64e37d4010c7eb8ee4087aa1d22cf566
BLAKE2b-256 87d9e1445f5232e55898945d748d50c6d9a0d08fa1b2c29a6e87216f143ca04f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page