| 
							- #!/usr/bin/python
 - #
 - # Test harness for UPnP ContentDirectory:1 service.
 - #
 - 
 - # Licensed under the MIT license
 - # http://opensource.org/licenses/mit-license.php
 - 
 - # (c) 2005, Tim Potter <tpot@samba.org>
 - 
 - from twisted.web import client
 - from twisted.internet import reactor
 - from twisted.python import usage
 - 
 - import sys, string, SOAPpy
 - 
 - class UPnPSOAPProxy:
 -     """A proxy for making UPnP SOAP calls."""
 - 
 -     def __init__(self, url):
 -         self.url = url
 - 
 -     def _cbGotResult(self, result):
 -         return SOAPpy.parseSOAPRPC(result)
 - 
 -     def callRemote(self, method, *args, **kwargs):
 - 
 -         payload = SOAPpy.buildSOAP(args = args, kw = kwargs, method = method)
 -         payload = string.replace(payload, '\n', '\r\n')
 -         
 -         action = \
 -                '"urn:schemas-upnp-org:service:ContentDirectory:1#%s"' % method
 -         
 -         page = client.getPage(self.url, postdata = payload, method = 'POST',
 -                               headers = {'Content-Type': 'text/xml',
 -                                          'SOAPACTION': action})
 - 
 -         return page.addCallback(self._cbGotResult)
 - 
 - class Options(usage.Options):
 -     pass
 - 
 - def printResult(value):
 -     print value
 -     reactor.stop()
 - 
 - def printError(error):
 -     print 'error', error
 -     reactor.stop()
 - 
 - #proxy = UPnPSOAPProxy('http://192.168.126.128:5643/ContentDirectory/control')
 - proxy = UPnPSOAPProxy('http://127.0.0.1:8080/ContentDirectory/control')
 - #proxy = UPnPSOAPProxy('http://16.176.65.48:5643/ContentDirectory/control')
 - 
 - #proxy.callRemote('GetSearchCapabilities').addCallbacks(printResult, printError)
 - #proxy.callRemote('GetSortCapabilities').addCallbacks(printResult, printError)
 - 
 - proxy.callRemote('Browse',
 -                  ObjectID = '0\\Music\\Genres\\Others\\chimes.wav',
 - #                 BrowseFlag = 'BrowseDirectChildren',
 -                  BrowseFlag = 'BrowseMetadata',
 -                  Filter = '*',
 -                  StartingIndex = 0,
 -                  RequestedCount = 700,
 -                  SortCriteria = None).addCallbacks(printResult, printError)
 - 
 - reactor.run()
 
 
  |