33 lines
1009 B
Python
Executable File
33 lines
1009 B
Python
Executable File
#!/usr/bin/env python2
|
|
import subprocess
|
|
import time
|
|
from requests.exceptions import ConnectionError
|
|
from kodijson import Kodi # sudo pip install kodi-json
|
|
|
|
def monitor_state():
|
|
mon_state = subprocess.check_output(['/usr/bin/tvservice', '-s'])
|
|
return mon_state.split(' ')[1] in ['0xa', '0x12000a', '0x40002']
|
|
|
|
|
|
def kodi_state():
|
|
try:
|
|
kodi = Kodi("http://tv:8080/jsonrpc")
|
|
ap = kodi.Player.GetActivePlayers()
|
|
return len(ap['result']) > 0
|
|
except ConnectionError: # This is a dirty trick, if kodi is not yet ready to answer requests
|
|
return False
|
|
|
|
|
|
prev_state = None
|
|
while True:
|
|
# second count
|
|
curr_state = kodi_state()
|
|
# check if there is a change in the screen state
|
|
if curr_state != prev_state:
|
|
if curr_state is True:
|
|
subprocess.check_output(['sispmctl', '-o', '1'])
|
|
else:
|
|
subprocess.check_output(['sispmctl', '-f', '1'])
|
|
prev_state = curr_state
|
|
time.sleep(1.)
|