def update_metadata(self, metadata): songid = None if isinstance(metadata, dict): if self._metadata == metadata: return else: self._metadata = metadata self.metadata = mpris_decode(metadata) elif isinstance(metadata, str): if self.metadata_str == metadata: return else: self.metadata_str = metadata self.metadata = didl_decode(metadata) log.msg(self.metadata) else: log.err('Bad metadata format : %s' % metadata) return if 'songid' in self.metadata: if self.songid != int(self.metadata['songid']): songid = int(self.metadata['songid']) if songid: self.songid = songid self.upnp_eventAV(int(self.songid), 'CurrentTrack') self.oh_eventPLAYLIST(int(self.songid), 'id') self.oh_eventTIME(1, 'trackcount') if 'duration' in self.metadata: if self._duration != self.metadata['duration']: duration = int(self.metadata['duration']) log.msg('duration: %d' % duration) if duration < 1: self.upnp_duration = "0:00:00" self._duration = 0 else: self._duration = duration self.upnp_duration = mpristime_to_upnptime(duration) log.msg('track length: %s' % self.upnp_duration, loglevel=logging.DEBUG) self.upnp_eventAV(self.upnp_duration, 'CurrentTrackDuration') self.oh_eventINFO(int(self._duration//1000000), 'duration') self.oh_eventTIME(int(self._duration//1000000), 'duration') if 'url' in self.metadata: if self._track_URI != self.metadata['url']: self._track_URI = self.metadata['url'] self.upnp_eventAV(self._track_URI, 'AVTransportURI') self.oh_eventINFO(self._track_URI, 'uri') self.upnp_eventAV(self._track_URI, 'CurrentTrackURI') if 'mpris:artUrl' in self.metadata: url = self.parent.register_art_url(self.metadata['mpris:artUrl']) self.metadata['albumArtURI'] = url self.oh_eventINFO(self.metadata_str, 'metadata') self.upnp_eventAV(self.metadata_str, 'AVTransportURIMetaData')
def update_metadata(self, metadata): songid = None if isinstance(metadata, dict): if self._metadata == metadata: return else: self._metadata = metadata self.metadata = mpris_decode(metadata) elif isinstance(metadata, str): if self.metadata_str == metadata: return else: self.metadata_str = metadata self.metadata = didl_decode(metadata) log.msg(self.metadata) else: log.err('Bad metadata format : %s' % metadata) return if 'songid' in self.metadata: if self.songid != int(self.metadata['songid']): songid = int(self.metadata['songid']) if songid: self.songid = songid self.upnp_eventAV(int(self.songid), 'CurrentTrack') self.oh_eventPLAYLIST(int(self.songid), 'id') self.oh_eventTIME(1, 'trackcount') if 'duration' in self.metadata: if self._duration != self.metadata['duration']: duration = int(self.metadata['duration']) log.msg('duration: %d' % duration) if duration < 1: self.upnp_duration = "0:00:00" self._duration = 0 else: self._duration = duration self.upnp_duration = mpristime_to_upnptime(duration) log.msg('track length: %s' % self.upnp_duration, loglevel=logging.DEBUG) self.upnp_eventAV(self.upnp_duration, 'CurrentTrackDuration') self.oh_eventINFO(int(self._duration // 1000000), 'duration') self.oh_eventTIME(int(self._duration // 1000000), 'duration') if 'url' in self.metadata: if self._track_URI != self.metadata['url']: self._track_URI = self.metadata['url'] self.upnp_eventAV(self._track_URI, 'AVTransportURI') self.oh_eventINFO(self._track_URI, 'uri') self.upnp_eventAV(self._track_URI, 'CurrentTrackURI') if 'mpris:artUrl' in self.metadata: url = self.parent.register_art_url(self.metadata['mpris:artUrl']) self.metadata['albumArtURI'] = url self.oh_eventINFO(self.metadata_str, 'metadata') self.upnp_eventAV(self.metadata_str, 'AVTransportURIMetaData')
def update_metadata(self, metadata): if metadata != self._metadata: self._metadata.update(metadata) self.metadata.update(mpris_decode(metadata)) if 'mpris:length' in metadata.keys(): ln = int(metadata['mpris:length']) if ln < 1: self._track_duration = "0:00:00" else: self._track_duration = mpristime_to_upnptime(ln) log.msg('track length: %s' % self._track_duration, loglevel=logging.DEBUG) if 'xesam:url' in metadata.keys(): self._track_URI = metadata['xesam:url'] self.metadata_str = didl_encode(self.metadata)
def get_reltime(self, fmt='UPNP'): if self.timer is not None: s = self.timer.get() if (self._duration//1000000 - s) < 2: if not self._next: log.msg('next!!') self._next = True reactor.callLater(3, self.next) # @UndefinedVariable if fmt == 'UPNP': t = mpristime_to_upnptime(s) elif fmt == 'seconds': t = int(s) else: # msec t = s else: if fmt == 'UPNP': t = self.reltime else: t = self.seconds return t
def get_reltime(self, fmt='UPNP'): if self.timer is not None: s = self.timer.get() if (self._duration // 1000000 - s) < 2: if not self._next: log.msg('next!!') self._next = True reactor.callLater(3, self.next) # @UndefinedVariable if fmt == 'UPNP': t = mpristime_to_upnptime(s) elif fmt == 'seconds': t = int(s) else: # msec t = s else: if fmt == 'UPNP': t = self.reltime else: t = self.seconds return t
def update_metadata(self, metadata): if metadata == self._metadata: return self._metadata = metadata metadata = mpris_decode(metadata) songid = None if self.has_tracklist: if "mpris:trackid" in metadata: try: if self.songid != self.numid[str(metadata["mpris:trackid"])]: songid = self.numid[str(metadata["mpris:trackid"])] except KeyError: if "url" in metadata: self.maxsongid += 1 self.numid.update({self.maxsongid: str(metadata["mpris:trackid"])}) self.numid.update({str(metadata["mpris:trackid"]): self.maxsongid}) self.playlist.append(self.maxsongid) # if len(self.badlist) > 0: # songid = self.badlist.pop(0) # self.numid.update( # {songid: str(metadata['mpris:trackid'])}) # self.numid.update( # {str(metadata['mpris:trackid']): songid}) # else: # self.insert( # metadata['url'], self.maxsongid, metadata) elif "songid" in metadata: if self.songid != int(metadata["songid"]): songid = int(metadata["songid"]) else: if "songid" in metadata: if self.songid != int(metadata["songid"]): songid = int(metadata["songid"]) else: if "url" in metadata: for track in self._playlist: if track[1] == metadata["url"]: songid = track[0] metadata.update(track[2]) break else: songid = self.maxsongid + 1 self.insert(metadata["url"], self.maxsongid, metadata) if songid: self.songid = songid self.metadata = {} self.upnp_eventAV(int(self.songid), "CurrentTrack") self.oh_eventPLAYLIST(int(self.songid), "id") self.oh_eventTIME(1, "trackcount") if "duration" in metadata: if self._duration != metadata["duration"]: duration = int(metadata["duration"]) log.err("duration: %d" % duration) if duration < 1: self._track_duration = "0:00:00" self._duration = 0 else: self._duration = duration self._track_duration = mpristime_to_upnptime(duration) log.msg("track length: %s" % self._track_duration, loglevel=logging.DEBUG) self.upnp_eventAV(self._track_duration, "CurrentTrackDuration") self.oh_eventINFO(int(self._duration // 1000000), "duration") self.oh_eventTIME(int(self._duration // 1000000), "duration") if "url" in metadata: if self._track_URI != metadata["url"]: self._track_URI = metadata["url"] self.upnp_eventAV(self._track_URI, "AVTransportURI") self.oh_eventINFO(self._track_URI, "uri") self.upnp_eventAV(self._track_URI, "CurrentTrackURI") if "mpris:artUrl" in metadata: url = self.parent.register_art_url(metadata["mpris:artUrl"]) metadata["albumArtURI"] = url self.metadata.update(metadata) self.metadata_str = didl_encode(self.metadata) self.oh_eventINFO(self.metadata_str, "metadata") self.upnp_eventAV(self.metadata_str, "AVTransportURIMetaData")
def update_metadata(self, metadata): if metadata == self._metadata: return self._metadata = metadata metadata = mpris_decode(metadata) songid = None if self.has_tracklist: if 'mpris:trackid' in metadata: try: if self.songid != self.numid[str( metadata['mpris:trackid'])]: songid = self.numid[str(metadata['mpris:trackid'])] except KeyError: if 'url' in metadata: self.maxsongid += 1 self.numid.update( {self.maxsongid: str(metadata['mpris:trackid'])}) self.numid.update( {str(metadata['mpris:trackid']): self.maxsongid}) self.playlist.append(self.maxsongid) # if len(self.badlist) > 0: # songid = self.badlist.pop(0) # self.numid.update( # {songid: str(metadata['mpris:trackid'])}) # self.numid.update( # {str(metadata['mpris:trackid']): songid}) # else: # self.insert( # metadata['url'], self.maxsongid, metadata) elif 'songid' in metadata: if self.songid != int(metadata['songid']): songid = int(metadata['songid']) else: if 'songid' in metadata: if self.songid != int(metadata['songid']): songid = int(metadata['songid']) else: if 'url' in metadata: for track in self._playlist: if track[1] == metadata['url']: songid = track[0] metadata.update(track[2]) break else: songid = self.maxsongid + 1 self.insert(metadata['url'], self.maxsongid, metadata) if songid: self.songid = songid self.metadata = {} self.upnp_eventAV(int(self.songid), 'CurrentTrack') self.oh_eventPLAYLIST(int(self.songid), 'id') self.oh_eventTIME(1, 'trackcount') if 'duration' in metadata: if self._duration != metadata['duration']: duration = int(metadata['duration']) log.err('duration: %d' % duration) if duration < 1: self._track_duration = "0:00:00" self._duration = 0 else: self._duration = duration self._track_duration = mpristime_to_upnptime(duration) log.msg('track length: %s' % self._track_duration, loglevel=logging.DEBUG) self.upnp_eventAV(self._track_duration, 'CurrentTrackDuration') self.oh_eventINFO(int(self._duration // 1000000), 'duration') self.oh_eventTIME(int(self._duration // 1000000), 'duration') if 'url' in metadata: if self._track_URI != metadata['url']: self._track_URI = metadata['url'] self.upnp_eventAV(self._track_URI, 'AVTransportURI') self.oh_eventINFO(self._track_URI, 'uri') self.upnp_eventAV(self._track_URI, 'CurrentTrackURI') if 'mpris:artUrl' in metadata: url = self.parent.register_art_url(metadata['mpris:artUrl']) metadata['albumArtURI'] = url self.metadata.update(metadata) self.metadata_str = didl_encode(self.metadata) self.oh_eventINFO(self.metadata_str, 'metadata') self.upnp_eventAV(self.metadata_str, 'AVTransportURIMetaData')