-
Notifications
You must be signed in to change notification settings - Fork 0
/
volume.py
44 lines (37 loc) · 1.36 KB
/
volume.py
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
44
#!/usr/bin/python3
try:
import config
except:
print('WARN! Unable to load config file')
import pychromecast
import socket
def isValidIp(ipAddress):
try:
socket.inet_aton(ipAddress)
return True
except:
return False
class Volume:
def __init__(self, groupName):
try:
self.devices = config.VOLUMES[groupName]
except:
print("Warn: preset was not found")
def apply(self):
for chromecastIpOrName, volumePercent in self.devices.items():
if isValidIp(chromecastIpOrName):
self.setVolumeOnIpAddress(chromecastIpOrName, volumePercent)
chromecasts = pychromecast.get_chromecasts()
print(self.devices)
for cc in chromecasts:
if not cc.device.friendly_name in self.devices:
print('Ignoring '+cc.device.friendly_name)
continue
print('Set '+cc.device.friendly_name+' at volume '+str(self.devices[cc.device.friendly_name])+' on ip '+cc.host)
cc.wait()
cc.set_volume(self.devices[cc.device.friendly_name])
def setVolumeOnIpAddress(self, chromecastIpOrName, volumePercent):
device = pychromecast.Chromecast(host=chromecastIpOrName)
print('Set '+chromecastIpOrName+' at volume '+str(volumePercent))
device.wait()
device.set_volume(volumePercent)