def get_music_services(self, device): service = self.control_point.get_ms_service(device) service_response = service.ListAvailableServices() musicservices = {} if 'AvailableServiceDescriptorList' in service_response: elt = AvailableServices().from_string(service_response['AvailableServiceDescriptorList']) service_response['AvailableServiceDescriptorList'] = elt.get_items() for item in service_response['AvailableServiceDescriptorList']: musicservices[item.Id] = item.Name return musicservices
def get_music_services(self): """ """ service = self.get_ms_service() service_response = service.ListAvailableServices() if 'AvailableServiceDescriptorList' in service_response: ''' <Services> <Service Capabilities="31" Id="0" MaxMessagingChars="0" Name="Napster" SecureUri="https://api.napster.com/device/soap/v1" Uri="http://api.napster.com/device/soap/v1" Version="1.0"> <Policy Auth="UserId" PollInterval="30"/> <Presentation> <Strings Uri="http://update-services.sonos.com/services/napster/string.xml" Version="1"/> <Logos Large="http://www.napster.com/services/Sonos/LargeLogo.png" Small="http://www.napster.com/services/Sonos/SmallLogo.png"/> </Presentation> </Service> <Service Capabilities="0" Id="254" MaxMessagingChars="0" Name="RadioTime" SecureUri="http://legato.radiotime.com/Radio.asmx" Uri="http://legato.radiotime.com/Radio.asmx" Version="1.1"> <Policy Auth="Anonymous" PollInterval="0"/> <Presentation/> </Service> <Service Capabilities="19" Id="2" MaxMessagingChars="0" Name="Deezer" SecureUri="https://moapi.sonos.com/Deezer/SonosAPI.php" Uri="http://moapi.sonos.com/Deezer/SonosAPI.php" Version="1.1"> <Policy Auth="UserId" PollInterval="60"/> <Presentation/> </Service> </Services> ''' elt = AvailableServices().from_string(service_response['AvailableServiceDescriptorList']) service_response['AvailableServiceDescriptorList'] = elt.get_items() for item in service_response['AvailableServiceDescriptorList']: # manually create Sonos specific add-on services serviceversion = 'http://www.sonos.com/Services/' + item.Version # TODO: fix params so they are fully dynamic if item.Name == 'RadioTime': addr = parse_url(item.Uri) port = 80 if addr.port == None else addr.port url_base = '%s://%s:%s' % (addr.scheme, addr.hostname, port) self.rt_service = Service('getMetadata', serviceversion, url_base=url_base, control_url=addr.path, scpd_url='file:///radiotime-scpd.xml', build=True) elif item.Name == 'Napster': self.np_service = napster(item.SecureUri, item.Uri, serviceversion) return service_response
def get_music_services(self): """ """ service = self.get_ms_service() service_response = service.ListAvailableServices() if 'AvailableServiceDescriptorList' in service_response: ''' <Services> <Service Capabilities="31" Id="0" MaxMessagingChars="0" Name="Napster" SecureUri="https://api.napster.com/device/soap/v1" Uri="http://api.napster.com/device/soap/v1" Version="1.0"> <Policy Auth="UserId" PollInterval="30"/> <Presentation> <Strings Uri="http://update-services.sonos.com/services/napster/string.xml" Version="1"/> <Logos Large="http://www.napster.com/services/Sonos/LargeLogo.png" Small="http://www.napster.com/services/Sonos/SmallLogo.png"/> </Presentation> </Service> <Service Capabilities="0" Id="254" MaxMessagingChars="0" Name="RadioTime" SecureUri="http://legato.radiotime.com/Radio.asmx" Uri="http://legato.radiotime.com/Radio.asmx" Version="1.1"> <Policy Auth="Anonymous" PollInterval="0"/> <Presentation/> </Service> <Service Capabilities="19" Id="2" MaxMessagingChars="0" Name="Deezer" SecureUri="https://moapi.sonos.com/Deezer/SonosAPI.php" Uri="http://moapi.sonos.com/Deezer/SonosAPI.php" Version="1.1"> <Policy Auth="UserId" PollInterval="60"/> <Presentation/> </Service> </Services> ''' elt = AvailableServices().from_string(service_response['AvailableServiceDescriptorList']) service_response['AvailableServiceDescriptorList'] = elt.get_items() for item in service_response['AvailableServiceDescriptorList']: if item.Name == 'RadioTime': # manually create Sonos specific add-on services # TODO: sort out url # def __init__(self, id, serv_type, url_base, scpd_url, # control_url='', event_url='', presentation_url='', # build_async=False, async_cb=None, build=False): self.rt_service = Service('getMetadata', 'http://www.sonos.com/Services/1.1', url_base='http://legato.radiotime.com:80', control_url='/Radio.asmx', scpd_url='file:///radiotime-scpd.xml', build=True) return service_response