def insert(self, url, afterid, metadata, checked=False): if 'youtube' in url and not checked: # eclipse workaround !!! y = os.environ y.update({'PYTHONPATH': '/usr/bin/python'}) # / eclipse workaround d = utils.getProcessOutput( '/usr/bin/youtube-dl', ['-g', '-f', 'bestaudio', url], env=y, reactor=reactor) d.addCallback( lambda u: self.insert( u.split('\n')[0], afterid, metadata, True)) return d # log.err('playlist length:%s' % len(self._playlist)) self.maxsongid += 1 if len(self._playlist) == 0: self._playlist.append([self.maxsongid, url, metadata]) else: if afterid == '0': self._playlist.insert(0, [self.maxsongid, url, metadata]) else: self._playlist.insert( self.playlist[self.playlist.index(int(afterid))], [self.maxsongid, url, metadata]) # log.err('real playlist: %s' % self._playlist) self.playlist = [i[0] for i in self._playlist] # log.err('new playlist: %s' % self.playlist) # log.err('metadata dic: %s' % metadata) self.oh_playlist = [str(i) for i in self.playlist] self.idArray = id_array(self.playlist) self.changed_tracks() if self.songid == 0: self.update_metadata({'songid': 1}) return defer.succeed(self.maxsongid)
def insert(self, url, afterid, metadata, checked=False): if 'youtube' in url and not checked: # eclipse workaround !!! y = os.environ y.update({'PYTHONPATH': '/usr/bin/python'}) # / eclipse workaround d = utils.getProcessOutput('/usr/bin/youtube-dl', ['-g', '-f', 'bestaudio', url], env=y, reactor=reactor) d.addCallback(lambda u: self.insert( u.split('\n')[0], afterid, metadata, True)) return d # log.err('playlist length:%s' % len(self._playlist)) self.maxsongid += 1 if len(self._playlist) == 0: self._playlist.append([self.maxsongid, url, metadata]) else: if afterid == '0': self._playlist.insert(0, [self.maxsongid, url, metadata]) else: self._playlist.insert( self.playlist[self.playlist.index(int(afterid))], [self.maxsongid, url, metadata]) # log.err('real playlist: %s' % self._playlist) self.playlist = [i[0] for i in self._playlist] # log.err('new playlist: %s' % self.playlist) # log.err('metadata dic: %s' % metadata) self.oh_playlist = [str(i) for i in self.playlist] self.idArray = id_array(self.playlist) self.changed_tracks() if self.songid == 0: self.update_metadata({'songid': 1}) return defer.succeed(self.maxsongid)
def delete(self, songid): # log.err(self.playlist) try: suppressed = self.playlist.index(int(songid)) except IndexError: pass else: self._playlist.pop(suppressed) self.playlist.pop(suppressed) self.idArray = id_array(self.playlist) self.changed_tracks()
def delete(self, songid): if self.has_tracklist: self.mediaplayer.call( "RemoveTrack", dbus.types.ObjectPath(self.numid[int(songid)]), interf="org.mpris.MediaPlayer2.TrackList" ) else: try: suppressed = self.playlist.index(songid) except IndexError: pass else: self._playlist.pop(suppressed) self.playlist.pop(suppressed) self.idArray = id_array(self.playlist) self.changed_state("TrackList", {}, "")
def delete(self, songid): if self.has_tracklist: self.mediaplayer.call('RemoveTrack', dbus.types.ObjectPath( self.numid[int(songid)]), interf='org.mpris.MediaPlayer2.TrackList') else: try: suppressed = self.playlist.index(songid) except IndexError: pass else: self._playlist.pop(suppressed) self.playlist.pop(suppressed) self.idArray = id_array(self.playlist) self.changed_state('TrackList', {}, '')
def insert(self, url, afterid, metadata, checked=False): # def get_newid(ignored): # d = self.mediaplayer.get( # 'Tracks', interf='org.mpris.MediaPlayer2.TrackList') # d.addCallback(got_id) # return d # # def got_id(newidlist): # print(newidlist) # newid = [ # item for item in newidlist if item not in self._playlist] # try: # return newid[0] # except: # print("gggg") # self.badlist.append(self.maxsongid+1) # return {'pos': self.maxsongid+1} # # def inserted(res, md): # self.maxsongid += 1 # if isinstance(res, dict): # meta = didl_decode(md.encode('utf-8')) # meta.update({'songid': res['pos']}) # res.update({'metadata': meta}) # else: # self.numid.update({res: self.maxsongid}) # print(res) # self.numid.update({self.maxsongid: res}) # return self.maxsongid if self.launching: d = task.deferLater(reactor, 0.5, self.insert, *(url, afterid, metadata)) return d if not self.launched: print("*") self.launching = True threads.deferToThread(self.launch_player) d = task.deferLater(reactor, 0.5, self.insert, *(url, afterid, metadata)) return d if "youtube" in url and not checked: # eclipse workaround !!! y = os.environ y.update({"PYTHONPATH": "/usr/bin/python"}) # / eclipse workaround d = utils.getProcessOutput("/usr/bin/youtube-dl", ["-g", "-f", "bestaudio", url], env=y, reactor=reactor) d.addCallback(lambda u: self.insert(u.split("\n")[0], afterid, metadata, True)) return d if self.has_tracklist: if len(self.playlist) == 0 or int(afterid) == 0: self.mediaplayer.call( "AddTrack", url, dbus.ObjectPath("/org/mpris/MediaPlayer2/TrackList/NoTrackurl"), True, interf="org.mpris.MediaPlayer2.TrackList", ) else: self.mediaplayer.call( "AddTrack", url, dbus.ObjectPath(self.numid[int(afterid)]), True, interf="org.mpris.MediaPlayer2.TrackList", ) # d.addCallback(get_newid) # d.addCallback(inserted, metadata) d = task.deferLater(reactor, 0.5, lambda: self.playlist[-1]) d.addCallback(show) return d else: log.err("playlist length:%s" % len(self._playlist)) self.maxsongid += 1 if not isinstance(metadata, dict): try: metadata = metadata.encode("utf-8") except: log.err("utf8 issue: %s" % metadata) metadata = metadata.decode("utf-8") metadata = didl_decode(metadata) metadata.update({"songid": str(self.maxsongid)}) if len(self._playlist) == 0: self._playlist.append([self.maxsongid, url, metadata]) else: self._playlist.insert(self.playlist[self.playlist.index(int(afterid))], [self.maxsongid, url, metadata]) log.err("real playlist: %s" % self._playlist) self.playlist = [i[0] for i in self._playlist] log.err("new playlist: %s" % self.playlist) log.err("metadata dic: %s" % metadata) self.oh_playlist = [str(i) for i in self.playlist] self.idArray = id_array(self.playlist) self.changed_state("TrackList", {}, "") if self.songid == 0: self.songid = 1 return defer.succeed(self.maxsongid)
def updated(ignored): self.oh_eventPLAYLIST(id_array(self.playlist), "idarray")
def update_playlist(self, newpl): self.playlist = newpl self.idArray = id_array(newpl) self.oh_eventPLAYLIST(self.idArray, 'idarray')
def changed_tracks(self): self.oh_eventPLAYLIST(id_array(self.playlist), 'idarray')
def insert(self, url, afterid, metadata, checked=False): # def get_newid(ignored): # d = self.mediaplayer.get( # 'Tracks', interf='org.mpris.MediaPlayer2.TrackList') # d.addCallback(got_id) # return d # # def got_id(newidlist): # print(newidlist) # newid = [ # item for item in newidlist if item not in self._playlist] # try: # return newid[0] # except: # print("gggg") # self.badlist.append(self.maxsongid+1) # return {'pos': self.maxsongid+1} # # def inserted(res, md): # self.maxsongid += 1 # if isinstance(res, dict): # meta = didl_decode(md.encode('utf-8')) # meta.update({'songid': res['pos']}) # res.update({'metadata': meta}) # else: # self.numid.update({res: self.maxsongid}) # print(res) # self.numid.update({self.maxsongid: res}) # return self.maxsongid if self.launching: d = task.deferLater(reactor, 0.5, self.insert, *(url, afterid, metadata)) return d if not self.launched: print('*') self.launching = True threads.deferToThread(self.launch_player) d = task.deferLater(reactor, 0.5, self.insert, *(url, afterid, metadata)) return d if 'youtube' in url and not checked: # eclipse workaround !!! y = os.environ y.update({'PYTHONPATH': '/usr/bin/python'}) # / eclipse workaround d = utils.getProcessOutput('/usr/bin/youtube-dl', ['-g', '-f', 'bestaudio', url], env=y, reactor=reactor) d.addCallback(lambda u: self.insert( u.split('\n')[0], afterid, metadata, True)) return d if self.has_tracklist: if len(self.playlist) == 0 or int(afterid) == 0: self.mediaplayer.call( 'AddTrack', url, dbus.ObjectPath( '/org/mpris/MediaPlayer2/TrackList/NoTrackurl'), True, interf='org.mpris.MediaPlayer2.TrackList') else: self.mediaplayer.call( 'AddTrack', url, dbus.ObjectPath(self.numid[int(afterid)]), True, interf='org.mpris.MediaPlayer2.TrackList') # d.addCallback(get_newid) # d.addCallback(inserted, metadata) d = task.deferLater(reactor, 0.5, lambda: self.playlist[-1]) d.addCallback(show) return d else: log.err('playlist length:%s' % len(self._playlist)) self.maxsongid += 1 if not isinstance(metadata, dict): try: metadata = metadata.encode('utf-8') except: log.err('utf8 issue: %s' % metadata) metadata = metadata.decode('utf-8') metadata = didl_decode(metadata) metadata.update({'songid': str(self.maxsongid)}) if len(self._playlist) == 0: self._playlist.append([self.maxsongid, url, metadata]) else: self._playlist.insert( self.playlist[self.playlist.index(int(afterid))], [self.maxsongid, url, metadata]) log.err('real playlist: %s' % self._playlist) self.playlist = [i[0] for i in self._playlist] log.err('new playlist: %s' % self.playlist) log.err('metadata dic: %s' % metadata) self.oh_playlist = [str(i) for i in self.playlist] self.idArray = id_array(self.playlist) self.changed_state('TrackList', {}, '') if self.songid == 0: self.songid = 1 return defer.succeed(self.maxsongid)
def updated(ignored): self.oh_eventPLAYLIST(id_array(self.playlist), 'idarray')