1 # Simple UPnP control point using BRisa framework
3 from brisa.core.reactors import install_default_reactor
4 reactor = install_default_reactor()
6 from brisa.core.network import parse_url
7 from brisa.core.threaded_call import run_async_function
9 from brisa.upnp.control_point.control_point import ControlPoint
10 from brisa.upnp.control_point.control_point_av import ControlPointAV
13 service = ('u','urn:schemas-upnp-org:service:PlayList:1')
14 zukebox_type = 'urn:schemas-upnp-org:device:ZukeBoxServer:1'
16 class ZukeboxControlPoint(ControlPointAV):
19 ControlPointAV.__init__(self)
21 self.cp = self.create_control_point()
24 reactor.add_after_stop_func(self.cp.stop)
27 self.cp.start_search(300, 'upnp:rootdevice')
28 while self.set_zukebox_server(self.cp):
29 print 'Searching Zukebox Server'
34 def create_control_point(self):
35 """ Creates the control point and binds callbacks to device events.
38 cp.subscribe('new_device_event', self.on_new_device)
39 cp.subscribe('removed_device_event', self.on_removed_device)
43 def on_new_device(self, dev):
51 def on_removed_device(self, udn):
58 def get_switch_service(self, device):
59 return device.services[service[1]]
62 def set_zukebox_server(self, cp):
64 for device in cp.get_devices():
65 if device.values().friendly_name == 'Zukebox-Server':
66 cp.set_current_server(device)
71 def get_playlist(self, cp):
72 print 'Ainda falta implementar a chamada do playlist, esqueci o codigo no lab'
75 print 'O mesmo para o print acima - search '
77 def content_directory(self, cp):
78 print 'O mesmo para o print acima - content_directory '