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
11 service = ('u','urn:schemas-upnp-org:service:AudioLibrary:1')
12 zukebox_type = 'urn:schemas-upnp-org:device:ZukeBoxServer:1'
14 def on_new_device(dev):
16 print 'Got new device: ', dev.udn
20 def on_removed_device(udn):
22 print 'Device is gone: ', udn
24 def get_switch_service(device):
25 return device.services[service[1]]
27 def create_control_point():
28 """ Creates the control point and binds callbacks to device events.
31 c.subscribe('new_device_event', on_new_device)
32 c.subscribe('removed_device_event', on_removed_device)
37 """ Main loop iteration receiving input commands.
39 c = create_control_point()
41 #run_async_function(_handle_cmds, (c, ))
42 reactor.add_after_stop_func(c.stop)
48 input= raw_input('(type help)command: ')
49 except KeyboardInterrupt, EOFError:
56 print 'Available commands: '
57 for x in ['help', 'search', 'set_zukebox <dev number>', 'get_playlist', 'stop', 'list', 'exit']:
63 elif input == 'search':
65 c.start_search(300, 'upnp:rootdevice')
70 for d in c.get_devices().values():
71 print 'Device no.:', k
73 print 'Name: ', d.friendly_name
74 print 'Device type', d.device_type
75 print 'Services: ', d.services.keys()
76 print 'Embedded devices:', [dev.friendly_name for dev in d.devices.values()]
79 elif input.startswith('set_zukebox'):
81 c.current_server = devices[int(input.split(' ')[1])]
83 print 'Zukebox number not found. Please run list and check againg'
84 c.current_server = None
85 elif input == 'get_playlist':
87 service = get_switch_service(c.current_server)
88 playlist = service.GetPlaylist()
89 for music in playlist:
90 print '%s', music.name
92 if not hasattr(c, 'current_server') or not c.current_server:
93 print 'Zukebox device not set. Please use set zukebox <n>'
95 print 'Erro in get_playlist: ',e
101 if __name__ == '__main__':