X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fplugin.py;h=2cc284ff1eb043e1a6a0e58b74bb940ffee14d88;hb=37dd60538984a3917354b794a5c96b0a025f8e95;hp=db440133f4f7b99f027908b21e47f6a9f5adc2f8;hpb=155d2ff37be9cc519ac62c020932bc639385bca2;p=mpd-sima.git diff --git a/sima/lib/plugin.py b/sima/lib/plugin.py index db44013..2cc284f 100644 --- a/sima/lib/plugin.py +++ b/sima/lib/plugin.py @@ -170,7 +170,7 @@ class AdvancedPlugin(Plugin): albums = self.player.search_albums(artist) if not albums: return None - self.log.debug('Albums candidates: %s', albums) + self.log.debug('Albums to choose from: %s', albums) albums_hist = self.get_album_history(artist) self.log.trace('Albums history: %s', [a.name for a in albums_hist]) albums_not_in_hist = [a for a in albums if a.name not in albums_hist] @@ -181,16 +181,17 @@ class AdvancedPlugin(Plugin): return None random.shuffle(albums_not_in_hist) albums_not_in_hist.extend(albums_hist) - self.log.debug('Albums candidate: %s', albums_not_in_hist) + self.log.trace('Album candidates: %s', albums_not_in_hist) album_to_queue = [] for album in albums_not_in_hist: # Controls the album found is not already queued - if album in {t.album for t in self.player.queue}: + if album in {t.Album.name for t in self.player.queue}: self.log.debug('"%s" already queued, skipping!', album) continue # In random play mode use complete playlist to filter + # Yes indeed, some users play in random with album mode :| if self.player.playmode.get('random'): - if album in {t.album for t in self.player.playlist}: + if album in {t.Album.name for t in self.player.playlist}: self.log.debug('"%s" already in playlist, skipping!', album) continue @@ -203,11 +204,17 @@ class AdvancedPlugin(Plugin): self.__class__.__name__, artist, album_to_queue) return album_to_queue - def filter_track(self, tracks, unplayed=False): + def filter_track(self, tracks, chosen=None, unplayed=False): """ Extract one unplayed track from a Track object list. * not in history * not already in the queue + + :param list(Track) tracks: List of tracks to chose from + :param list(Track) chosen: List of tracks previously chosen + :param bool unplayed: chose only unplayed (honoring history duration setting) + :return: A Track + :rtype: Track """ artist = tracks[0].Artist # In random play mode use complete playlist to filter @@ -225,10 +232,10 @@ class AdvancedPlugin(Plugin): for trk in [_ for _ in not_in_hist if _ not in deny_list]: # Should use albumartist heuristic as well if self.plugin_conf.getboolean('single_album', False): # pylint: disable=no-member - albums = [tr.album for tr in deny_list] - albums += [tr.album for tr in self.to_add] - if (trk.album == self.player.current.album or - trk.album in albums): + albums = [tr.Album for tr in deny_list] + albums += [tr.Album for tr in chosen] + if (trk.Album == self.player.current.Album or + trk.Album in albums): self.log.debug('Found unplayed track ' + 'but from an album already queued: %s', trk) continue