pyTivo
[pyTivo/krkeegan.git] / beacon.py
blob135c660c8882c2af73511584a964ef3567bcdc9f
1 from socket import *
2 from threading import Timer
4 class Beacon:
6 UDPSock = socket(AF_INET, SOCK_DGRAM)
7 UDPSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
8 services = []
10 def add_service(self, service):
11 self.services.append(service)
12 self.send_beacon()
14 def format_services(self):
15 return ';'.join(self.services)
17 def format_beacon(self):
18 beacon = []
20 from Config import config
22 if config.has_option('Server', 'GUID'):
23 guid = config.get('Server', 'GUID')
24 else:
25 guid = '123456'
27 beacon.append('tivoconnect=1')
28 beacon.append('swversion=1')
29 beacon.append('method=broadcast')
30 beacon.append('identity=%s' % guid)
31 beacon.append('machine=Armooo-Py')
32 beacon.append('platform=pc')
33 beacon.append('services=' + self.format_services())
35 return '\n'.join(beacon)
37 def send_beacon(self):
38 self.UDPSock.sendto(self.format_beacon(), ('255.255.255.255', 2190))
40 def start(self):
41 self.send_beacon()
42 self.timer = Timer(60, self.start)
43 self.timer.start()
45 def stop(self):
46 self.timer.cancel()
48 if __name__ == '__main__':
49 b = Beacon()
52 b.add_service('TiVoMediaServer:9032/http')
53 b.send_beacon_timer()