def load(self, uri, metadata, mimetype=None): self.info("loading: %r %r %r" % (uri, metadata, mimetype)) elt = DIDLLite.DIDLElement.fromString(metadata) meta = None if(len(elt.getItems()) > 0): meta = Item.getItemMetadata(elt.getItems()[0]) self.player.load(uri, meta, mimetype) state = self.player.getState() connection_id = self.server.connection_manager_server.lookup_avt_id(self.current_connection_id) self.stop(silent=True) # the check whether a stop is really needed is done inside stop if mimetype is None: _, ext = os.path.splitext(uri) if ext == '.ogg': mimetype = 'application/ogg' else: mimetype = 'audio/mpeg' self.metadata = metadata self.mimetype = mimetype self.tags = {} if self.playcontainer == None: self.server.av_transport_server.set_variable(connection_id, 'AVTransportURI', uri) self.server.av_transport_server.set_variable(connection_id, 'AVTransportURIMetaData', metadata) self.server.av_transport_server.set_variable(connection_id, 'NumberOfTracks', 1) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrack', 1) else: self.server.av_transport_server.set_variable(connection_id, 'AVTransportURI', self.playcontainer[1]) self.server.av_transport_server.set_variable(connection_id, 'NumberOfTracks', len(self.playcontainer[2])) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrack', self.playcontainer[0] + 1) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrackURI', uri) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrackMetaData', metadata) if uri.startswith('http://'): transport_actions = Set(['PLAY,STOP,PAUSE']) else: transport_actions = Set(['PLAY,STOP,PAUSE,SEEK']) if len(self.server.av_transport_server.get_variable('NextAVTransportURI').value) > 0: transport_actions.add('NEXT') if self.playcontainer != None: if len(self.playcontainer[2]) - (self.playcontainer[0] + 1) > 0: transport_actions.add('NEXT') if self.playcontainer[0] > 0: transport_actions.add('PREVIOUS') self.server.av_transport_server.set_variable(connection_id, 'CurrentTransportActions', transport_actions) self.update()
def load(self, uri, metadata, mimetype=None): self.info("loading: %r %r %r" % (uri, metadata, mimetype)) elt = DIDLLite.DIDLElement.fromString(metadata) meta = None if(len(elt.getItems()) > 0): meta = Item.getItemMetadata(elt.getItems()[0]) self.player.load(uri, meta, mimetype) connection_id = self.server.connection_manager_server.lookup_avt_id(self.current_connection_id) self.stop(silent=True) # the check whether a stop is really needed is done inside stop if mimetype is None: _, ext = os.path.splitext(uri) if ext == '.ogg': mimetype = 'application/ogg' else: mimetype = 'audio/mpeg' self.metadata = metadata self.mimetype = mimetype self.tags = {} if self.playcontainer == None: self.server.av_transport_server.set_variable(connection_id, 'AVTransportURI', uri) self.server.av_transport_server.set_variable(connection_id, 'AVTransportURIMetaData', metadata) self.server.av_transport_server.set_variable(connection_id, 'NumberOfTracks', 1) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrack', 1) else: self.server.av_transport_server.set_variable(connection_id, 'AVTransportURI', self.playcontainer[1]) self.server.av_transport_server.set_variable(connection_id, 'NumberOfTracks', len(self.playcontainer[2])) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrack', self.playcontainer[0] + 1) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrackURI', uri) self.server.av_transport_server.set_variable(connection_id, 'CurrentTrackMetaData', metadata) if uri.startswith('http://'): transport_actions = Set(['PLAY,STOP,PAUSE']) else: transport_actions = Set(['PLAY,STOP,PAUSE,SEEK']) if len(self.server.av_transport_server.get_variable('NextAVTransportURI').value) > 0: transport_actions.add('NEXT') if self.playcontainer != None: if len(self.playcontainer[2]) - (self.playcontainer[0] + 1) > 0: transport_actions.add('NEXT') if self.playcontainer[0] > 0: transport_actions.add('PREVIOUS') self.server.av_transport_server.set_variable(connection_id, 'CurrentTransportActions', transport_actions) self.update()
def getItemMetadata(self, item): return Item.getItemMetadata(item)