X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fplugin.py;h=db440133f4f7b99f027908b21e47f6a9f5adc2f8;hb=855fe9d3aa88dd8536e954baf3ca5a90389ae921;hp=49cd7f155d9c0ee057e0353aef4e27cf4e28f10f;hpb=baa6dc78770e02cfdaf79398a88b0a624a6836df;p=mpd-sima.git diff --git a/sima/lib/plugin.py b/sima/lib/plugin.py index 49cd7f1..db44013 100644 --- a/sima/lib/plugin.py +++ b/sima/lib/plugin.py @@ -23,8 +23,7 @@ Plugin object to derive from import random -from .track import Track -from .meta import Album, Artist, MetaContainer +from .meta import Artist, MetaContainer class Plugin: @@ -126,29 +125,15 @@ class AdvancedPlugin(Plugin): """ # Query History - def get_history(self, artist=False): - """Constructs Track list of already played artists. - - :param Artist artist: Artist object to look history for - """ + def get_history(self): + """Returns a Track list of already played artists.""" duration = self.main_conf.getint('sima', 'history_duration') - name = None - if artist: - name = artist.name - from_db = self.sdb.get_history(duration=duration, artist=name) - hist = [Track(artist=tr[0], album=tr[1], title=tr[2], - file=tr[3]) for tr in from_db] - return hist + return self.sdb.fetch_history(duration=duration) def get_album_history(self, artist): """Retrieve album history""" - hist = [] - tracks_from_db = self.get_history(artist=artist) - for trk in tracks_from_db: - if trk.album and trk.album in hist: - continue - hist.append(Album(name=trk.album, artist=Artist(trk.artist))) - return hist + duration = self.main_conf.getint('sima', 'history_duration') + return self.sdb.fetch_albums_history(needle=artist, duration=duration) def get_reorg_artists_list(self, alist): """ @@ -162,7 +147,7 @@ class AdvancedPlugin(Plugin): not_queued_artist = alist - queued_artist duration = self.main_conf.getint('sima', 'history_duration') hist = [] - for art in self.sdb.get_artists_history(alist, duration=duration): + for art in self.sdb.fetch_artists_history(alist, duration=duration): if art not in hist: if art not in queued_artist: hist.insert(0, art) @@ -230,7 +215,7 @@ class AdvancedPlugin(Plugin): deny_list = self.player.playlist else: deny_list = self.player.queue - not_in_hist = list(set(tracks) - set(self.get_history(artist=artist))) + not_in_hist = list(set(tracks) - set(self.sdb.fetch_history(artist=artist))) if not not_in_hist: self.log.debug('All tracks already played for "%s"', artist) if unplayed: @@ -240,8 +225,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 [tr.album for tr in deny_list]): + trk.album in albums): self.log.debug('Found unplayed track ' + 'but from an album already queued: %s', trk) continue