X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fplugins%2Finternal%2Flastfm.py;h=3c576a60320d8de0e00e943fb41974737d5cdce2;hb=9d52bca547a781f264dcb8af782dd0beefb57b75;hp=b28d34e679482da4e2bccd37cd688b61310fdbba;hpb=7854938788e0af521edd7199e40db796d3256351;p=mpd-sima.git diff --git a/sima/plugins/internal/lastfm.py b/sima/plugins/internal/lastfm.py index b28d34e..3c576a6 100644 --- a/sima/plugins/internal/lastfm.py +++ b/sima/plugins/internal/lastfm.py @@ -30,6 +30,7 @@ def cache(func): results = cls._cache.get('asearch').get(hashedlst) else: results = func(*args, **kwargs) + cls.log.debug('caching request') cls._cache.get('asearch').update({hashedlst:list(results)}) random.shuffle(results) return results @@ -142,6 +143,13 @@ class Lastfm(Plugin): if self.sdb.get_bl_album(trk, add_not=True): self.log.info('Blacklisted album: {0}: '.format(trk)) continue + # Should use albumartist heuristic as well + if self.plugin_conf.getboolean('single_album'): + if (trk.album == self.player.current.album or + trk.album in [trk.alb for trk in self.to_add]): + self.log.debug('Found unplayed track ' + + 'but from an album already queued: %s' % (trk)) + continue candidate.append(trk) if not candidate: self.log.debug('Unable to find title to add' + @@ -237,6 +245,8 @@ class Lastfm(Plugin): for artist in extra_arts: self.log.debug('Looking for artist similar to "{0.artist}" as well'.format(artist)) similar = self.lfm_similar_artists(artist=artist) + if not similar: + return ret_extra similar = sorted(similar, key=lambda sim: sim[1], reverse=True) ret_extra.extend(self.get_artists_from_player(similar)) if current.artist in ret_extra: @@ -387,6 +397,8 @@ class Lastfm(Plugin): self.queue_mode() candidates = self.to_add self.to_add = list() + if self.plugin_conf.get('queue_mode') != 'album': + random.shuffle(candidates) return candidates def callback_player_database(self):