Ejemplo n.º 1
0
 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    
Ejemplo n.º 2
0
    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        
Ejemplo n.º 3
0
    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