X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fplugins%2Finternal%2Frandomfallback.py;h=bb41bde933df9b6b9e51f892f915b9bdc38fd68a;hb=46918496aae0f5759dcaebe0ce0d13e4c5737f8b;hp=cb19f497efbc00972fbc7915f60cb176663fe1de;hpb=ce32823ab9d41112d989f4543432926eb38487e6;p=mpd-sima.git diff --git a/sima/plugins/internal/randomfallback.py b/sima/plugins/internal/randomfallback.py index cb19f49..bb41bde 100644 --- a/sima/plugins/internal/randomfallback.py +++ b/sima/plugins/internal/randomfallback.py @@ -28,7 +28,6 @@ import random # local import from ...lib.plugin import Plugin -from ...lib.track import Track class RandomFallBack(Plugin): @@ -51,29 +50,37 @@ class RandomFallBack(Plugin): duration = self.daemon.config.getint('sima', 'history_duration') tracks_from_db = self.daemon.sdb.get_history(duration=duration) # Construct Track() objects list from database history - artists = [ tr[-1] for tr in tracks_from_db ] + artists = [tr[-1] for tr in tracks_from_db] return set(artists) def callback_need_track_fb(self): trks = list() target = self.plugin_conf.getint('track_to_add') while len(trks) < target: - trks.append(self.get_trk()) + trk = self.get_trk() + if trk: + trks.append(trk) return trks def get_trk(self): + """Get a single track acording to random flavour + """ + trk = None artists = list(self.player.artists) if self.mode == 'sensitive': played_art = self.get_played_artist() - while 42: + while artists: art = random.choice(artists) if art not in played_art: break + artists.pop(art) elif self.mode == 'pure': art = random.choice(artists) self.log.debug('Random art: {}'.format(art)) - trk = random.choice(self.player.find_track(art)) - self.log.info('random fallback ({}): {}'.format(self.mode, trk)) + trks = self.player.find_track(art) + if trks: + trk = random.choice(trks) + self.log.info('random fallback ({}): {}'.format(self.mode, trk)) return trk