File: setVolume.py

package info (click to toggle)
snapcast 0.31.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,012 kB
  • sloc: cpp: 37,729; python: 2,543; sh: 455; makefile: 16
file content (43 lines) | stat: -rwxr-xr-x 1,380 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/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