57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
#!/bin/python3
|
|
import rxv
|
|
from mpd import MPDClient
|
|
import time
|
|
|
|
def main():
|
|
client = MPDClient()
|
|
client.connect("localhost", 6600)
|
|
receivers = rxv.find()
|
|
rx = receivers[0]
|
|
lastState = getMPDStatus(client)
|
|
while True:
|
|
#Check if paused or seeking
|
|
if getMPDStatus(client) != lastState:
|
|
#play toggled
|
|
if getMPDStatus(client) == 1:
|
|
#playing now - turn on receiver asap
|
|
if not rx.on:
|
|
#dirty workaround so that my cubie detects the receiver as output
|
|
rx.on = True
|
|
time.sleep(4)
|
|
rx.input = "HDMI1"
|
|
time.sleep(1)
|
|
rx.input = "HDMI2"
|
|
else:
|
|
turnOff = waitForChanges(client, 10)
|
|
if turnOff:
|
|
#lets not waste energy and turn of the receiver
|
|
rx.on = False
|
|
|
|
lastState = getMPDStatus(client)
|
|
#wait until the player-subsystem gets changed
|
|
client.idle("player")
|
|
|
|
client.close()
|
|
client.disconnect()
|
|
|
|
def getMPDStatus( client ):
|
|
if "play" in client.status()["state"]:
|
|
return 1
|
|
else:
|
|
return 0
|
|
|
|
def waitForChanges( client, timeout ):
|
|
counter = 0
|
|
initState = getMPDStatus(client)
|
|
ranIntoTimeout = True
|
|
while counter < timeout:
|
|
if getMPDStatus(client) != initState:
|
|
ranIntoTimeout = False
|
|
break;
|
|
time.sleep(0.1)
|
|
counter += 1
|
|
return ranIntoTimeout
|
|
|
|
main()
|