X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fplugins%2Finternal%2Frandomfallback.py;fp=sima%2Fplugins%2Finternal%2Frandomfallback.py;h=0000000000000000000000000000000000000000;hb=23309f235879380a5ef7db3a51bda4d12e31902e;hp=ee0be20b78822ed645a92bf754a93aab0d91646a;hpb=65385738f889849be01cb70815e8899e319c9532;p=mpd-sima.git diff --git a/sima/plugins/internal/randomfallback.py b/sima/plugins/internal/randomfallback.py deleted file mode 100644 index ee0be20..0000000 --- a/sima/plugins/internal/randomfallback.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2013, 2014 Jack Kaliko -# -# This file is part of sima -# -# sima is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# sima is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with sima. If not, see . -# -# -""" -Fetching similar artists from last.fm web services -""" - -# standard library import -import random - -# third parties components - -# local import -from ...lib.plugin import Plugin -from ...lib.meta import Artist - - -class RandomFallBack(Plugin): - """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) - self.daemon = daemon - if not self.plugin_conf: - return - self.mode = self.plugin_conf.get('flavour', None) - if self.mode not in ['pure', 'sensible']: - self.log.warning('Bad value for flavour, ' - '"{}" not in ["pure", "sensible"]'.format(self.mode)) - self.mode = 'pure' - - def get_played_artist(self,): - """Constructs list of already played artists. - """ - 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] - return set(artists) - - 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 according to random flavour - """ - trk = None - art = None - artists = list(self.player.artists) - if self.mode == 'sensible': - played_art = self.get_played_artist() - while artists: - art = random.choice(artists) - if art not in played_art: - break - 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(Artist(art)) - if trks: - trk = random.choice(trks) - self.log.info('random fallback ({}): {}'.format(self.mode, trk)) - return trk - - - -# VIM MODLINE -# vim: ai ts=4 sw=4 sts=4 expandtab