X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fplugins%2Finternal%2Frandomfallback.py;fp=sima%2Fplugins%2Finternal%2Frandomfallback.py;h=aceff4414ce7f1fc0c4ff2ebd81f6fb1d2e6e149;hb=6d8430680bdea646cd17f27e3ec58c5f9ee1d629;hp=bb41bde933df9b6b9e51f892f915b9bdc38fd68a;hpb=8bf0d37a99b80af5674a639bfbc155db18ac557d;p=mpd-sima.git diff --git a/sima/plugins/internal/randomfallback.py b/sima/plugins/internal/randomfallback.py index bb41bde..aceff44 100644 --- a/sima/plugins/internal/randomfallback.py +++ b/sima/plugins/internal/randomfallback.py @@ -31,7 +31,10 @@ from ...lib.plugin import Plugin class RandomFallBack(Plugin): - """Add random track as fallback""" + """Add random track as fallback + TODO: refactor, this plugin does not look good to me. + callback_need_track_fb/get_trk articulation is not elegant at all + """ def __init__(self, daemon): super().__init__(daemon) @@ -56,18 +59,24 @@ class RandomFallBack(Plugin): def callback_need_track_fb(self): trks = list() target = self.plugin_conf.getint('track_to_add') + limit = 0 while len(trks) < target: trk = self.get_trk() if trk: trks.append(trk) + else: + limit += 1 + if limit > 3: + return trks return trks def get_trk(self): """Get a single track acording to random flavour """ trk = None + art = None artists = list(self.player.artists) - if self.mode == 'sensitive': + if self.mode == 'sensible': played_art = self.get_played_artist() while artists: art = random.choice(artists) @@ -76,6 +85,8 @@ class RandomFallBack(Plugin): artists.pop(art) elif self.mode == 'pure': art = random.choice(artists) + if art is None: + return None self.log.debug('Random art: {}'.format(art)) trks = self.player.find_track(art) if trks: