def on_metadata(self, value): print('Metadata: %s' % value) if value: if self.selected in self.tracks_info: info = update_trackinfo(didl_decode(value)[0]) self.tracks_info.update({ self.selected: Track(artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=self.selected, arturl=info['arturl'], color=(.7, .7, .7, .8), duration=(info['duration'] if 'duration' in info.keys() else '0:00:00'), is_selected=False) }) self.info = info['title'] print('396: %s' % info['arturl']) self.bgimg = info['arturl'] if self.pop: self.popup.dismiss() self.pop = False else: reactor.callLater( 2, # @UndefinedVariable self.on_metadata, value)
def show(res): log.msg('result: %s' % res) print(dir(res)) if res: for i, r in enumerate(res): print('%s --> %s' % (i, r)) for item in didl_decode(res.Result): print(item) reactor.callLater(2, reactor.stop) # @UndefinedVariable
def insert_metadata(self, md): dic = didl_decode(md) # log.err(dic) for i, tag in enumerate(dic.keys()): if tag.lower() in ('class', 'restricted', 'id', 'duration', 'parentid', 'protocolinfo', 'url', 'ownerudn'): continue if not isinstance(dic[tag], str): continue reactor.callLater( # @UndefinedVariable float(i) / 2, self.call, ' '.join( ('sticker', 'set song', dic['url'].join('"' * 2), tag, '"' + dic[tag] + '"')))
def set_track_URI(self, uri, md=''): log.debug("set track uri : %s " % uri) try: log.debug("current uri : %s " % self._track_URI) except: pass if uri != self._track_URI: self._track_URI = uri self.metadata_str = md self.set_metadata(didl_decode(md.encode('utf-8'))) d = self.call('addid', uri) d.addCallback(self.set_songid) d.addCallback(self.play)
def insert_metadata(self, md): dic = didl_decode(md) # log.err(dic) for i, tag in enumerate(dic.keys()): if tag.lower() in ('class', 'restricted', 'id', 'duration', 'parentid', 'protocolinfo', 'url', 'ownerudn'): continue if not isinstance(dic[tag], str): continue reactor.callLater( # @UndefinedVariable float(i) / 2, self.call, ' '.join(('sticker', 'set song', dic['url'].join('"' * 2), tag, '"' + dic[tag] + '"')))
def get_titles(res): t = [] if res.Result: for r in didl_decode(res.Result.encode('utf-8')): if 'object.container' in r['class']: if 'childCount' in r: if int(r['childCount']) < 1: continue # browsable = True node = TreeViewLabel( text=r['title'][:32], id=r['id']) node.browsable = True node.populated = False else: img = None if 'albumArtURI' in r: if 'text' in r['albumArtURI']: img = r['albumArtURI']['text'] if not img: if 'res1' in r: if 'image' in r['res1']['protocolInfo']: img = r['res1']['text'] if not img: if 'video' in r['class']: img = 'data/icons/movie.png' elif 'audio' in r['class']: img = 'data/icons/audio.png' else: img = 'data/icons/icon.png' node = TreeViewMedia( text=r['title'][:32]) node.img = img node.url = r['url'] node.metadata = r['metadata'] node.browsable = False node.populated = True t.append(node) return t
def get_titles(res): t = [] if res.Result: for r in didl_decode(res.Result.encode('utf-8')): if 'object.container' in r['class']: if 'childCount' in r: if int(r['childCount']) < 1: continue # browsable = True node = TreeViewLabel(text=r['title'][:32], id=r['id']) node.browsable = True node.populated = False else: img = None if 'albumArtURI' in r: if 'text' in r['albumArtURI']: img = r['albumArtURI']['text'] if not img: if 'res1' in r: if 'image' in r['res1']['protocolInfo']: img = r['res1']['text'] if not img: if 'video' in r['class']: img = 'data/icons/movie.png' elif 'audio' in r['class']: img = 'data/icons/audio.png' else: img = 'data/icons/icon.png' node = TreeViewMedia(text=r['title'][:32]) node.img = img node.url = r['url'] node.metadata = r['metadata'] node.browsable = False node.populated = True t.append(node) return t
def on_metadata(self, value): print('Metadata: %s' % value) if value: if self.selected in self.tracks_info: info = update_trackinfo(didl_decode(value)[0]) self.tracks_info.update({self.selected: Track( artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=self.selected, arturl=info['arturl'], color=(.7, .7, .7, .8), duration=(info['duration'] if 'duration' in info.keys() else '0:00:00'), is_selected=False)}) self.info = info['title'] print('396: %s' % info['arturl']) self.bgimg = info['arturl'] if self.pop: self.popup.dismiss() self.pop = False else: reactor.callLater(2, # @UndefinedVariable self.on_metadata, value)
def got_info(res, tracks): # print('res from server') if isinstance(tracks, int): # print(res.Metadata) info = didl_decode(res.Metadata) if len(info) > 1: print('bad response') return info = info[0] # print(info) info = update_trackinfo(info) if tracks in self.tracks_info: col = self.tracks_info[tracks].color else: col = (.5, .5, .5, .5) self.tracks_info.update({ tracks: Track(artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=tracks, arturl=info['arturl'], color=col, duration=info['duration'], is_selected=False) }) if tracks == self.selected: self.info = info['title'] print('593: %s' % info['arturl']) self.bgimg = info['arturl'] else: # print(res) # print(res.decode('utf-8')) # root = et.XML(res.decode('utf-8')) try: root = et.fromstring(res) except Exception as e: print('bad data from server %s' % e) root = et.fromstring(res.encode('utf-8', errors='ignore')) dic = XmlDictConfig(root) # print(dic) try: tl = dic['Entry'] except KeyError: print('bad response from renderer: %s' % res) else: if len(tl) != len(tracks): print('server returned %d result instead of %d' % (len(tl), len(tracks))) for track in tl: Id = int(track['Id']) info = didl_decode( track['Metadata'].encode('utf-8'))[0] info = update_trackinfo(info) # print(info) if Id in self.tracks_info: col = self.tracks_info[Id].color else: col = (.5, .5, .5, .5) self.tracks_info.update({ Id: Track(artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=Id, arturl=info['arturl'], color=col, duration=(info['duration'] if 'duration' in info else '00:00:00'), is_selected=False) }) if Id == self.selected: self.info = info['title'] self.bgimg = info['arturl'] # self.lasttrack = Id if self.pop: self.popup.dismiss() self.pop = False
def got_info(res, tracks): # print('res from server') if isinstance(tracks, int): # print(res.Metadata) info = didl_decode(res.Metadata) if len(info) > 1: print('bad response') return info = info[0] # print(info) info = update_trackinfo(info) if tracks in self.tracks_info: col = self.tracks_info[tracks].color else: col = (.5, .5, .5, .5) self.tracks_info.update({tracks: Track( artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=tracks, arturl=info['arturl'], color=col, duration=info['duration'], is_selected=False)}) if tracks == self.selected: self.info = info['title'] print('593: %s' % info['arturl']) self.bgimg = info['arturl'] else: # print(res) # print(res.decode('utf-8')) # root = et.XML(res.decode('utf-8')) try: root = et.fromstring(res) except Exception as e: print('bad data from server %s' % e) root = et.fromstring(res.encode('utf-8', errors='ignore')) dic = XmlDictConfig(root) # print(dic) try: tl = dic['Entry'] except KeyError: print('bad response from renderer: %s' % res) else: if len(tl) != len(tracks): print( 'server returned %d result instead of %d' % (len(tl), len(tracks))) for track in tl: Id = int(track['Id']) info = didl_decode( track['Metadata'].encode('utf-8'))[0] info = update_trackinfo(info) # print(info) if Id in self.tracks_info: col = self.tracks_info[Id].color else: col = (.5, .5, .5, .5) self.tracks_info.update({Id: Track( artist=info['artist'], title=info['title'], album=info['album'], genre=info['genre'], url=info['url'], id=Id, arturl=info['arturl'], color=col, duration=( info['duration'] if 'duration' in info else '00:00:00'), is_selected=False)}) if Id == self.selected: self.info = info['title'] self.bgimg = info['arturl'] # self.lasttrack = Id if self.pop: self.popup.dismiss() self.pop = False