snapcast/control/setVolume.py
2020-01-10 21:28:42 +01:00

37 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python
import sys
import telnetlib
import json
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;
def setVolume(client, volume):
global requestId
doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Client.SetVolume', 'params': {'id': client, 'volume': {'muted': False, 'percent': volume}}, 'id': requestId}), requestId)
requestId = requestId + 1
volume = int(sys.argv[2])
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Server.GetStatus', 'id': 1}), 1)
for group in j["result"]["server"]["groups"]:
for client in group["clients"]:
setVolume(client['id'], volume)
j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Server.GetStatus', 'id': 1}), 1)
for group in j["result"]["server"]["groups"]:
for client in group["clients"]:
print("MAC: " + client['host']['mac'] + ", name: " + client['config']['name'] + ", conntect: " + str(client['connected']) + ", volume: " + str(client['config']['volume']['percent']))
telnet.close