from suds.client import Client 

 from suds.wsse import Security 

 from suds_passworddigest.token import UsernameDigestToken 


 class ONVIFService(object): 


     def __init__(self, xaddr, user, passwd, url): 

         self.url = 'file://'+ url 

         self.xaddr = xaddr 

         # Create soap client 

         self.ws_client = Client(url=self.url,location=self.xaddr) 

         self.user = user 

         self.passwd = passwd 

         security = Security() 

         token = UsernameDigestToken(self.user, self.passwd) 

         security.tokens.append(token) 

         self.ws_client.set_options(wsse=security) 

          

     def __getattr__(self, name): 

         print(name) 

         return getattr(self.ws_client.service, name) 


 print("onvif starting") 

 device_service = ONVIFService('http://127.0.0.1/onvif/device_service','admin', '12345','/etc/onvif/wsdl/devicemgmt.wsdl') 

 ret=device_service.GetServiceCapabilities() 

 print ret 


 device_service = ONVIFService('http://127.0.0.1/onvif/Media','admin', '12345','/etc/onvif/wsdl/media.wsdl') 

 profiles=device_service.GetProfiles() 

 #print profiles 

 for profile in profiles: 

     print profile._token,profile.Name 

     param={"StreamSetup":profile.Name,"ProfileToken":profile._token} 

     MediaUri=device_service.GetStreamUri(param) 

     print MediaUri.Uri