예제 #1
0
	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()
예제 #2
0
	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()
예제 #3
0
 def getItemMetadata(self, item):
     return Item.getItemMetadata(item)
예제 #4
0
 def getItemUriMeta(self, item):
     return Item.getItemUriMeta(item)
예제 #5
0
 def getItemId(self, item):
     return Item.getItemId(item)
예제 #6
0
 def getItemTitle(self, item):
     return Item.getItemTitle(item)
예제 #7
0
 def getItemChildCount(self, item):
     return Item.getItemChildCount(item)
예제 #8
0
 def getItemType(self, item):
     return Item.getItemType(item)
예제 #9
0
 def isServer(self, item):
     return Item.isServer(item)
예제 #10
0
	def _isContainer(self, item):
		return Item.isContainer(item)
예제 #11
0
 def _isContainer(self, item):
     return Item.isContainer(item)
예제 #12
0
	def getItemId(self, item):
		return Item.getItemId(item)
예제 #13
0
	def getItemMetadata(self, item):
		return Item.getItemMetadata(item)
예제 #14
0
	def getItemUriMeta(self, item):
		return Item.getItemUriMeta(item)
예제 #15
0
	def getItemChildCount(self, item):
		return Item.getItemChildCount(item)
예제 #16
0
	def getItemTitle(self, item):
		return Item.getItemTitle(item)
예제 #17
0
	def isServer(self, item):
		return Item.isServer(item)
예제 #18
0
	def getItemType(self, item):
		return Item.getItemType(item)