def start(self): print "Upnp backend starting" # clear device list self._removeXML() # config Coherence conf = Config(self._configfile) c = Coherence({'logmode':'warning'}) c.setup(conf) #add share folders con = "" for f in config.share_folders: if len(con) > 0: con +="," con += f c.add_plugin('FSStore',name=config.device_name,content=con) # start a ControlPoint to start detecting upnp activity cp = ControlPoint(c, auto_client=['MediaServer']) cp.connect(self.mediaserver_detected, 'Coherence.UPnP.ControlPoint.MediaServer.detected') cp.connect(self.mediaserver_removed, 'Coherence.UPnP.ControlPoint.MediaServer.removed') #self._localdevice = cp.get_device_by_name(self._localdevicename) #print "SPRURPDDSOPF ",self._localdevice.client.get_friendly_name() print "Upnp loop succesfully started" self._handler.start() print "DBus loop succesfully started"
def start(self): print "Upnp backend starting" # clear device list self._removeXML() # config Coherence conf = Config(self._configfile) c = Coherence({'logmode': 'warning'}) c.setup(conf) #add share folders con = "" for f in config.share_folders: if len(con) > 0: con += "," con += f c.add_plugin('FSStore', name=config.device_name, content=con) # start a ControlPoint to start detecting upnp activity cp = ControlPoint(c, auto_client=['MediaServer']) cp.connect(self.mediaserver_detected, 'Coherence.UPnP.ControlPoint.MediaServer.detected') cp.connect(self.mediaserver_removed, 'Coherence.UPnP.ControlPoint.MediaServer.removed') #self._localdevice = cp.get_device_by_name(self._localdevicename) #print "SPRURPDDSOPF ",self._localdevice.client.get_friendly_name() print "Upnp loop succesfully started" self._handler.start() print "DBus loop succesfully started"
def main(): def got_result(result): print("got_result") def call_browse(ObjectID=0, StartingIndex=0, RequestedCount=0): r = f.backend.upnp_Browse(BrowseFlag='BrowseDirectChildren', RequestedCount=RequestedCount, StartingIndex=StartingIndex, ObjectID=ObjectID, SortCriteria='*', Filter='') r.addCallback(got_result) r.addErrback(got_result) def call_test(start, count): r = f.backend.ampache_query_artists(start, count) r.addCallback(got_result) r.addErrback(got_result) config = {} config['logmode'] = 'warning' c = Coherence(config) f = c.add_plugin('AmpacheStore', url='http://localhost/ampache/server/xml.server.php', key='password', user=None) reactor.callLater(3, call_browse, 0, 0, 0)
def main(): config = {} config['logmode'] = 'info' c = Coherence(config) f = c.add_plugin('GmusicStore', username="", password="", device_id="", no_thread_needed=True)
class TestSwitchPowerClient(unittest.TestCase): def setUp(self): louie.reset() self.coherence = Coherence({'unittest':'yes','logmode':'error','subsystem_log':{'controlpoint':'error'},'controlpoint':'yes'}) self.uuid = UUID() p = self.coherence.add_plugin('SimpleLight', name='test-light-%d'%os.getpid(),uuid=str(self.uuid)) def tearDown(self): def cleaner(r): self.coherence.clear() return r dl = self.coherence.shutdown() dl.addBoth(cleaner) return dl def test_get_state(self): """ tries to find the activated SimpleLight backend and queries its state. The state is expected to be "off" """ d = Deferred() def the_result(r): #print "the_result", r self.assertEqual(str(self.uuid), r.udn) call = r.client.switch_power.get_status() def got_answer(r): self.assertEqual(int(r['ResultStatus']), 0) d.callback(None) call.addCallback(got_answer) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d
class TestContentDirectoryServer(unittest.TestCase): def setUp(self): self.tmp_content = FilePath(self.mktemp()) f = self.tmp_content.child('content') audio = f.child('audio') f.child('images').makedirs() f.child('video').makedirs() album = audio.child('album-1') album.makedirs() album.child('track-1.mp3').touch() album.child('track-2.mp3').touch() album = audio.child('album-2') album.makedirs() album.child('track-1.ogg').touch() album.child('track-2.ogg').touch() self.coherence = Coherence({ 'unittest': 'yes', 'logmode': 'critical', 'no-subsystem_log': { 'controlpoint': 'error', 'action': 'info', 'soap': 'error' }, 'controlpoint': 'yes' }) self.uuid = str(UUID()) self.coherence.add_plugin('FSStore', name='MediaServer-%d' % os.getpid(), content=self.tmp_content.path, uuid=self.uuid, enable_inotify=False) def tearDown(self): self.tmp_content.remove() def cleaner(r): self.coherence.clear() return r dl = self.coherence.shutdown() dl.addBoth(cleaner) return dl def test_Browse(self): """ tries to find the activated FSStore backend and browses its root. """ d = Deferred() @wrapped(d) def the_result(mediaserver): cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(process_result=False) call.addCallback(got_first_answer, cdc) @wrapped(d) def got_first_answer(r, cdc): self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.childCount, 3) call = cdc.browse(object_id=item.id, process_result=False) call.addCallback(got_second_answer, item.childCount) @wrapped(d) def got_second_answer(r, childcount): self.assertEqual(int(r['TotalMatches']), childcount) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_Browse_Non_Existing_Object(self): d = Deferred() @wrapped(d) def the_result(mediaserver): cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='9999.nothing', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): self.assertIs(r, None) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() @wrapped(d) def the_result(mediaserver): self.assertEqual(self.uuid, mediaserver.udn) cdc = mediaserver.client.content_directory call = cdc.browse(object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.title, 'root') d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse(self): """ tries to find the activated FSStore backend and browses all audio files. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='4', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect four audio files here """ self.assertEqual(int(r['TotalMatches']), 4) d.callback(None) d = Deferred() self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect one item here """ self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.title, 'root') d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Search(self): """ tries to find the activated FSStore backend and searches for all its audio files. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.search(container_id='4', criteria='') call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect four audio files here """ self.assertEqual(len(r), 4) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d
class TestContentDirectoryServer(unittest.TestCase): def setUp(self): self.tmp_content = FilePath('tmp_content_coherence-%d' % os.getpid()) f = self.tmp_content.child('content') audio = f.child('audio') f.child('images').makedirs() f.child('video').makedirs() album = audio.child('album-1') album.makedirs() album.child('track-1.mp3').touch() album.child('track-2.mp3').touch() album = audio.child('album-2') album.makedirs() album.child('track-1.ogg').touch() album.child('track-2.ogg').touch() louie.reset() self.coherence = Coherence({ 'unittest': 'yes', 'logmode': 'debug', 'subsystem_log': { 'controlpoint': 'error', 'action': 'error', 'soap': 'error' }, 'controlpoint': 'yes' }) self.uuid = UUID() p = self.coherence.add_plugin('FSStore', name='MediaServer-%d' % os.getpid(), content=self.tmp_content.path, uuid=str(self.uuid)) def tearDown(self): self.tmp_content.remove() def cleaner(r): self.coherence.clear() return r dl = self.coherence.shutdown() dl.addBoth(cleaner) return dl def test_Browse(self): """ tries to find the activated FSStore backend and browses its root. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_second_answer(r, childcount): try: self.assertEqual(int(r['TotalMatches']), childcount) d.callback(None) except: d.errback() def got_first_answer(r): try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.childCount, 3) except: d.errback() call = mediaserver.client.content_directory.browse( object_id=item.id, process_result=False) call.addCallback(got_second_answer, item.childCount) return call call = mediaserver.client.content_directory.browse( process_result=False) call.addCallback(got_first_answer) self.coherence.ctrl.add_query( DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() return didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.title, 'root') except: d.errback() return d.callback(None) call = mediaserver.client.content_directory.browse( object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query( DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse(self): """ tries to find the activated FSStore backend and browses all audio files. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect four audio files here """ try: self.assertEqual(int(r['TotalMatches']), 4) except: d.errback() return d.callback(None) def my_browse(*args, **kwargs): kwargs['ContainerID'] = kwargs['ObjectID'] del kwargs['ObjectID'] del kwargs['BrowseFlag'] kwargs['SearchCriteria'] = '' return 'Search', kwargs #mediaserver.client.overlay_actions = {'Browse':my_browse} mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } call = mediaserver.client.content_directory.browse( object_id='4', process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query( DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect one item here """ try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() return didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.title, 'root') except: d.errback() return d.callback(None) mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } call = mediaserver.client.content_directory.browse( object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query( DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Search(self): """ tries to find the activated FSStore backend and searches for all its audio files. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect four audio files here """ try: self.assertEqual(len(r), 4) except: d.errback() d.callback(None) mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation' } call = mediaserver.client.content_directory.search( container_id='4', criteria='') call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query( DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d
class TestContentDirectoryServer(unittest.TestCase): def setUp(self): self.tmp_content = FilePath('tmp_content_coherence-%d'%os.getpid()) f = self.tmp_content.get_child()('content') audio = f.get_child()('audio') f.get_child()('images').makedirs() f.get_child()('video').makedirs() album = audio.get_child()('album-1') album.makedirs() album.get_child()('track-1.mp3').touch() album.get_child()('track-2.mp3').touch() album = audio.get_child()('album-2') album.makedirs() album.get_child()('track-1.ogg').touch() album.get_child()('track-2.ogg').touch() louie.reset() self.coherence = Coherence({'unittest':'yes','logmode':'debug','subsystem_log':{'controlpoint':'error', 'action':'error', 'soap':'error'},'controlpoint':'yes'}) self.uuid = UUID() p = self.coherence.add_plugin('FSStore', name='MediaServer-%d'%os.getpid(), content=self.tmp_content.path, uuid=str(self.uuid)) def tearDown(self): self.tmp_content.remove() def cleaner(r): self.coherence.clear() return r dl = self.coherence.shutdown() dl.addBoth(cleaner) return dl def test_Browse(self): """ tries to find the activated FSStore backend and browses its root. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_second_answer(r,childcount): try: self.assertEqual(int(r['TotalMatches']), childcount) d.callback(None) except: d.errback() def got_first_answer(r): try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.childCount, 3) except: d.errback() call = mediaserver.client.content_directory.browse(object_id=item.id, process_result=False) call.addCallback(got_second_answer,item.childCount) return call call = mediaserver.client.content_directory.browse(process_result=False) call.addCallback(got_first_answer) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() return didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.title, 'root') except: d.errback() return d.callback(None) call = mediaserver.client.content_directory.browse(object_id='0',browse_flag='BrowseMetadata',process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse(self): """ tries to find the activated FSStore backend and browses all audio files. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect four audio files here """ try: self.assertEqual(int(r['TotalMatches']), 4) except: d.errback() return d.callback(None) def my_browse(*args,**kwargs): kwargs['ContainerID'] = kwargs['ObjectID'] del kwargs['ObjectID'] del kwargs['BrowseFlag'] kwargs['SearchCriteria'] = '' return 'Search',kwargs #mediaserver.client.overlay_actions = {'Browse':my_browse} mediaserver.client.overlay_headers = {'user-agent':'Xbox/Coherence emulation'} call = mediaserver.client.content_directory.browse(object_id='4',process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect one item here """ try: self.assertEqual(int(r['TotalMatches']), 1) except: d.errback() return didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] try: self.assertEqual(item.title, 'root') except: d.errback() return d.callback(None) mediaserver.client.overlay_headers = {'user-agent':'Xbox/Coherence emulation'} call = mediaserver.client.content_directory.browse(object_id='0',browse_flag='BrowseMetadata',process_result=False) call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d def test_XBOX_Search(self): """ tries to find the activated FSStore backend and searches for all its audio files. """ d = Deferred() def the_result(mediaserver): try: self.assertEqual(str(self.uuid), mediaserver.udn) except: d.errback() def got_first_answer(r): """ we expect four audio files here """ try: self.assertEqual(len(r), 4) except: d.errback() d.callback(None) mediaserver.client.overlay_headers = {'user-agent':'Xbox/Coherence emulation'} call = mediaserver.client.content_directory.search(container_id='4', criteria='') call.addCallback(got_first_answer) call.addErrback(lambda x: d.errback(None)) self.coherence.ctrl.add_query(DeviceQuery('uuid', str(self.uuid), the_result, timeout=10, oneshot=True)) return d
def main(): config = {} config['logmode'] = 'warning' c = Coherence(config) f = c.add_plugin('SimpleLight') f = c.add_plugin('BetterLight')
class TestContentDirectoryServer(unittest.TestCase): def setUp(self): self.tmp_content = FilePath(self.mktemp()) f = self.tmp_content.child('content') audio = f.child('audio') f.child('images').makedirs() f.child('video').makedirs() album = audio.child('album-1') album.makedirs() album.child('track-1.mp3').touch() album.child('track-2.mp3').touch() album = audio.child('album-2') album.makedirs() album.child('track-1.ogg').touch() album.child('track-2.ogg').touch() louie.reset() self.coherence = Coherence( {'unittest': 'yes', 'logmode': 'critical', 'no-subsystem_log': {'controlpoint': 'error', 'action': 'info', 'soap': 'error'}, 'controlpoint': 'yes'}) self.uuid = str(UUID()) self.coherence.add_plugin('FSStore', name='MediaServer-%d' % os.getpid(), content=self.tmp_content.path, uuid=self.uuid, enable_inotify=False) def tearDown(self): self.tmp_content.remove() def cleaner(r): self.coherence.clear() return r dl = self.coherence.shutdown() dl.addBoth(cleaner) return dl def test_Browse(self): """ tries to find the activated FSStore backend and browses its root. """ d = Deferred() @wrapped(d) def the_result(mediaserver): cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(process_result=False) call.addCallback(got_first_answer, cdc) @wrapped(d) def got_first_answer(r, cdc): self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.childCount, 3) call = cdc.browse(object_id=item.id, process_result=False) call.addCallback(got_second_answer, item.childCount) @wrapped(d) def got_second_answer(r, childcount): self.assertEqual(int(r['TotalMatches']), childcount) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_Browse_Non_Existing_Object(self): d = Deferred() @wrapped(d) def the_result(mediaserver): cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='9999.nothing', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): self.assertIs(r, None) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() @wrapped(d) def the_result(mediaserver): self.assertEqual(self.uuid, mediaserver.udn) cdc = mediaserver.client.content_directory call = cdc.browse(object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.title, 'root') d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse(self): """ tries to find the activated FSStore backend and browses all audio files. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = {'user-agent': 'Xbox/Coherence emulation'} cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='4', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect four audio files here """ self.assertEqual(int(r['TotalMatches']), 4) d.callback(None) d = Deferred() self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Browse_Metadata(self): """ tries to find the activated FSStore backend and requests metadata for ObjectID 0. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation'} cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.browse(object_id='0', browse_flag='BrowseMetadata', process_result=False) call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect one item here """ self.assertEqual(int(r['TotalMatches']), 1) didl = DIDLLite.DIDLElement.fromString(r['Result']) item = didl.getItems()[0] self.assertEqual(item.title, 'root') d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d def test_XBOX_Search(self): """ tries to find the activated FSStore backend and searches for all its audio files. """ d = Deferred() @wrapped(d) def the_result(mediaserver): mediaserver.client.overlay_headers = { 'user-agent': 'Xbox/Coherence emulation'} cdc = mediaserver.client.content_directory self.assertEqual(self.uuid, mediaserver.udn) call = cdc.search(container_id='4', criteria='') call.addCallback(got_first_answer) @wrapped(d) def got_first_answer(r): """ we expect four audio files here """ self.assertEqual(len(r), 4) d.callback(None) self.coherence.ctrl.add_query( DeviceQuery('uuid', self.uuid, the_result, timeout=10, oneshot=True)) return d
def main(): config = {} config["logmode"] = "warning" c = Coherence(config) f = c.add_plugin("SimpleLight") f = c.add_plugin("BetterLight")