mirror of
https://github.com/badaix/snapcast.git
synced 2025-04-29 18:27:12 +02:00
added control.py
This commit is contained in:
parent
881d2f71bd
commit
05c8107203
2 changed files with 69 additions and 8 deletions
59
control/control.py
Executable file
59
control/control.py
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
import sys
|
||||||
|
import telnetlib
|
||||||
|
import json
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
print("usage: control.py <SERVER HOST> [setVolume|setName]")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
telnet = telnetlib.Telnet(sys.argv[1], 1705)
|
||||||
|
requestId = 1
|
||||||
|
|
||||||
|
def doRequest( j, requestId ):
|
||||||
|
print("send: " + j)
|
||||||
|
telnet.write(j + "\r\n")
|
||||||
|
while (True):
|
||||||
|
response = telnet.read_until("\r\n", 2)
|
||||||
|
jResponse = json.loads(response)
|
||||||
|
if 'id' in jResponse:
|
||||||
|
if jResponse['id'] == requestId:
|
||||||
|
# print("recv: " + response)
|
||||||
|
return jResponse;
|
||||||
|
return;
|
||||||
|
|
||||||
|
def setVolume(client, volume):
|
||||||
|
global requestId
|
||||||
|
doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Client.SetVolume', 'params': {'client': client, 'volume': volume}, 'id': requestId}), requestId)
|
||||||
|
requestId = requestId + 1
|
||||||
|
|
||||||
|
def setName(client, name):
|
||||||
|
global requestId
|
||||||
|
doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Client.SetName', 'params': {'client': client, 'name': name}, 'id': requestId}), requestId)
|
||||||
|
requestId = requestId + 1
|
||||||
|
|
||||||
|
if sys.argv[2] == "setVolume":
|
||||||
|
if len(sys.argv) < 4:
|
||||||
|
print("usage: control.py <SERVER HOST> setVolume <VOLUME>")
|
||||||
|
exit(0)
|
||||||
|
volume = int(sys.argv[3])
|
||||||
|
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1)
|
||||||
|
for client in j["result"]["clients"]:
|
||||||
|
setVolume(client['MAC'], volume)
|
||||||
|
|
||||||
|
elif sys.argv[2] == "setName":
|
||||||
|
if len(sys.argv) < 5:
|
||||||
|
print("usage: control.py <SERVER HOST> setName <MAC> <NAME>")
|
||||||
|
exit(0)
|
||||||
|
setName(sys.argv[3], sys.argv[4])
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("unknown command \"" + sys.argv[2] + "\"")
|
||||||
|
|
||||||
|
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1)
|
||||||
|
for client in j["result"]["clients"]:
|
||||||
|
print("MAC: " + client['MAC'] + ", conntect: " + str(client['connected']) + ", volume: " + str(client['volume']['percent']) + ", name: " + client['name'] + ", host: " + client['host'])
|
||||||
|
|
||||||
|
telnet.close
|
||||||
|
|
|
@ -15,8 +15,8 @@ def doRequest( j, requestId ):
|
||||||
jResponse = json.loads(response)
|
jResponse = json.loads(response)
|
||||||
if 'id' in jResponse:
|
if 'id' in jResponse:
|
||||||
if jResponse['id'] == requestId:
|
if jResponse['id'] == requestId:
|
||||||
print("recv: " + response)
|
# print("recv: " + response)
|
||||||
return;
|
return jResponse;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
def setVolume(client, volume):
|
def setVolume(client, volume):
|
||||||
|
@ -25,11 +25,13 @@ def setVolume(client, volume):
|
||||||
requestId = requestId + 1
|
requestId = requestId + 1
|
||||||
|
|
||||||
volume = int(sys.argv[2])
|
volume = int(sys.argv[2])
|
||||||
doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1)
|
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1)
|
||||||
setVolume("00:21:6a:7d:74:fc", volume)
|
for client in j["result"]["clients"]:
|
||||||
setVolume("80:1f:02:ed:fd:e0", volume)
|
setVolume(client['MAC'], volume)
|
||||||
setVolume("74:da:38:00:85:e2", volume)
|
|
||||||
setVolume("80:1f:02:ff:79:6e", volume)
|
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1)
|
||||||
setVolume("bc:5f:f4:ca:cd:64", volume)
|
for client in j["result"]["clients"]:
|
||||||
|
print("MAC: " + client['MAC'] + ", name: " + client['name'] + ", conntect: " + str(client['connected']) + ", volume: " + str(client['volume']['percent']))
|
||||||
|
|
||||||
telnet.close
|
telnet.close
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue