Exemple #1
0
 def updated(res):
     log.debug('playlist updated')
     if len(self.tracks) > 0:
         self.mpd.idArray = id_array(self.tracks)
         self.mpd.oh_eventPLAYLIST(self.mpd.idArray, 'idarray')
         self.plsversion = self.mpd.status['playlist']
         if tid:
             if int(tid) in self.tracks:
                 dd.callback(tid)
             else:
                 dd.errback()
Exemple #2
0
 def updated(res):
     log.debug('playlist updated')
     if len(self.tracks) > 0:
         self.mpd.idArray = id_array(self.tracks)
         self.mpd.oh_eventPLAYLIST(self.mpd.idArray, 'idarray')
         self.plsversion = self.mpd.status['playlist']
         if tid:
             if int(tid) in self.tracks:
                 dd.callback(tid)
             else:
                 dd.errback()
Exemple #3
0
    def update_playlist(self, playlist):
        def format_track(track):
            #             log.error('format: %s' % track['id'])
            en = et.Element('Entry')
            i = et.Element('Id')
            if 'id' not in track:
                log.critical('issue with playlist :%s' % track)
            i.text = track['id'].decode('utf-8')
            en.append(i)
            uri = et.Element('Uri')
            uri.text = track['url'].decode('utf-8')
            en.append(uri)
            md = et.Element('Metadata')
            md.text = didl_encode(track)
            en.append(md)
            return en

        def setter(res, pos):
            #             print('playlist detail: %s %s' % (pos, res))
            self.playlist_details[pos] = res

        if playlist is not None:
            if not isinstance(playlist, list):
                playlist = [playlist]
            if int(self.status['playlistlength']) == 0:
                self.playlist = []
                self.playlist_details = []
            else:
                delta = int(self.status['playlistlength']) - len(self.playlist)
                #                 print('delta= %d' % delta)
                if delta >= 0:
                    for track in playlist:
                        #                         self.cache_cover(track)
                        try:
                            if int(track['Pos']) >= len(self.playlist):
                                self.playlist.append(int(track['Id']))
                                d = self.call('playlistid', track['Id'])
                                d.addCallback(self.get_cover, track['Id'])
                                d.addCallback(mpd_decode)
                                d.addCallback(format_track)
                                d.addCallback(self.playlist_details.append)
                            else:
                                self.playlist[int(track['Pos'])] = int(
                                    track['Id'])
                                d = self.call('playlistid', track['Id'])
                                d.addCallback(self.get_cover)
                                d.addCallback(mpd_decode)
                                d.addCallback(format_track)
                                d.addCallback(setter, int(track['Pos']))
                        except:
                            continue
                else:
                    for track in playlist:
                        if 'Id' not in track:
                            continue
                        if track == {}:
                            self.playlist.pop()
                            self.playlist_details.pop()
                            delta += 1
                            continue
                        if delta < 0:
                            self.playlist.pop(int(track['Pos']))
                            self.playlist_details.pop(int(track['Pos']))
                            delta += 1
                        else:
                            self.playlist[int(track['Pos'])] = int(track['Id'])
                            d = self.call('playlistid', track['Id'])
                            d.addCallback(self.get_cover)
                            d.addCallback(mpd_decode)
                            d.addCallback(format_track)
                            d.addCallback(setter, int(track['Pos']))
        self.idArray = id_array(self.playlist)
        self.oh_eventPLAYLIST(self.idArray, 'idarray')
Exemple #4
0
    def update_playlist(self, playlist):

        def format_track(track):
            #             log.error('format: %s' % track['id'])
            en = et.Element('Entry')
            i = et.Element('Id')
            if 'id' not in track:
                log.critical('issue with playlist :%s' % track)
            i.text = track['id'].decode('utf-8')
            en.append(i)
            uri = et.Element('Uri')
            uri.text = track['url'].decode('utf-8')
            en.append(uri)
            md = et.Element('Metadata')
            md.text = didl_encode(track)
            en.append(md)
            return en

        def setter(res, pos):
            #             print('playlist detail: %s %s' % (pos, res))
            self.playlist_details[pos] = res

        if playlist is not None:
            if not isinstance(playlist, list):
                playlist = [playlist]
            if int(self.status['playlistlength']) == 0:
                self.playlist = []
                self.playlist_details = []
            else:
                delta = int(self.status['playlistlength']) - len(self.playlist)
#                 print('delta= %d' % delta)
                if delta >= 0:
                    for track in playlist:
                        #                         self.cache_cover(track)
                        try:
                            if int(track['Pos']) >= len(self.playlist):
                                self.playlist.append(int(track['Id']))
                                d = self.call('playlistid', track['Id'])
                                d.addCallback(self.get_cover, track['Id'])
                                d.addCallback(mpd_decode)
                                d.addCallback(format_track)
                                d.addCallback(self.playlist_details.append)
                            else:
                                self.playlist[int(
                                    track['Pos'])] = int(track['Id'])
                                d = self.call('playlistid', track['Id'])
                                d.addCallback(self.get_cover)
                                d.addCallback(mpd_decode)
                                d.addCallback(format_track)
                                d.addCallback(setter, int(track['Pos']))
                        except:
                            continue
                else:
                    for track in playlist:
                        if 'Id' not in track:
                            continue
                        if track == {}:
                            self.playlist.pop()
                            self.playlist_details.pop()
                            delta += 1
                            continue
                        if delta < 0:
                            self.playlist.pop(int(track['Pos']))
                            self.playlist_details.pop(int(track['Pos']))
                            delta += 1
                        else:
                            self.playlist[int(track['Pos'])] = int(track['Id'])
                            d = self.call('playlistid', track['Id'])
                            d.addCallback(self.get_cover)
                            d.addCallback(mpd_decode)
                            d.addCallback(format_track)
                            d.addCallback(setter, int(track['Pos']))
        self.idArray = id_array(self.playlist)
        self.oh_eventPLAYLIST(self.idArray, 'idarray')