X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fwebserv.py;h=2a9b8558ce4ce482d4d97f76438e9ce937461b25;hb=31b3f50c99aa088bf21a3ac2ad6e8a974dfb4105;hp=9800b92f32beca530b79502d13f65f5d45fceef0;hpb=e7c403d3131449c2701ee252e5b97eda3dbc9d81;p=mpd-sima.git diff --git a/sima/lib/webserv.py b/sima/lib/webserv.py index 9800b92..2a9b855 100644 --- a/sima/lib/webserv.py +++ b/sima/lib/webserv.py @@ -33,7 +33,7 @@ from hashlib import md5 # local import from .plugin import Plugin from .track import Track -from .meta import Artist, MetaContainer +from .meta import Artist, Album, MetaContainer from ..utils.utils import WSError, WSNotFound def cache(func): @@ -241,11 +241,11 @@ class WebService(Plugin): if not self.player.playlist: return [] tolookfor = self.player.playlist[-1].Artist - self.log.info('Looking for artist similar to "{}"'.format(tolookfor)) + self.log.info('Looking for artist similar to "%s"', tolookfor) self.log.debug(repr(tolookfor)) similar = self.ws_similar_artists(tolookfor) if not similar: - self.log.info('Got nothing from {0}!'.format(self.ws.name)) + self.log.info('Got nothing from %s!', self.ws.name) return [] self.log.info('First five similar artist(s): %s...', ' / '.join(map(str, list(similar)[:5]))) @@ -280,15 +280,16 @@ class WebService(Plugin): queued_artists = MetaContainer([trk.Artist for trk in self.player.playlist]) else: queued_artists = MetaContainer([trk.Artist for trk in self.player.queue]) - self.log.trace('Already queued: {}'.format(queued_artists)) - self.log.trace('Candidate: {}'.format(ret)) + self.log.trace('Already queued: %s', queued_artists) + self.log.trace('Candidate: %s', ret) if ret & queued_artists: self.log.debug('Removing already queued artists: ' - '{0}'.format('/'.join(map(str, ret & queued_artists)))) + '%s', '/'.join(map(str, ret & queued_artists))) ret = ret - queued_artists - if self.player.current and self.player.current.Artist in ret: - self.log.debug('Removing current artist: {0}'.format(self.player.current.Artist)) - ret = ret - MetaContainer([self.player.current.Artist]) + current = self.player.current + if current and current.Artist in ret: + self.log.debug('Removing current artist: %s', current.Artist) + ret = ret - MetaContainer([current.Artist]) # Move around similars items to get in unplayed|not recently played # artist first. self.log.info('Got {} artists in library'.format(len(ret))) @@ -316,9 +317,9 @@ class WebService(Plugin): albums = self.player.search_albums(artist) # str conversion while Album type is not propagated albums = [str(album) for album in albums] - if albums: - self.log.debug('Albums candidate: %s', ' / '.join(albums)) - else: continue + if not albums: + continue + self.log.debug('Albums candidate: %s', ' / '.join(albums)) # albums yet in history for this artist albums = set(albums) albums_yet_in_hist = albums & self._get_album_history(artist=artist) @@ -343,9 +344,11 @@ class WebService(Plugin): if not album_to_queue: self.log.info('No album found for "%s"', artist) continue - self.log.info('%s album candidate: %s - %s', self.ws.name, artist, album_to_queue) + self.log.info('%s album candidate: %s - %s', self.ws.name, + artist, album_to_queue) nb_album_add += 1 - candidates = self.player.find_album(artist, album_to_queue) + candidates = self.player.find_tracks(Album(name=album_to_queue, + artist=artist)) if self.plugin_conf.getboolean('shuffle_album'): random.shuffle(candidates) # this allows to select a maximum number of track from the album @@ -373,7 +376,7 @@ class WebService(Plugin): except WSError as err: self.log.warning('%s: %s', self.ws.name, err) for trk in titles: - found = self.player.fuzzy_find_track(artist, trk.title) + found = self.player.search_track(artist, trk.title) random.shuffle(found) if found: self.log.debug('%s', found[0]) @@ -384,13 +387,13 @@ class WebService(Plugin): """Get some tracks for track queue mode """ artists = self.get_local_similar_artists() - nbtracks_target = self.plugin_conf.getint('track_to_add') # pylint: disable=no-member + nbtracks_target = self.plugin_conf.getint('track_to_add') # pylint: disable=no-member for artist in artists: self.log.debug('Trying to find titles to add for "%r"', artist) - found = self.player.find_track(artist) + found = self.player.find_tracks(artist) random.shuffle(found) if not found: - self.log.debug('Found nothing to queue for {0}'.format(artist)) + self.log.debug('Found nothing to queue for %s', artist) continue # find tracks not in history for artist self.filter_track(found) @@ -400,7 +403,7 @@ class WebService(Plugin): self.log.debug('Found no tracks to queue!') return None for track in self.to_add: - self.log.info('{1} candidates: {0!s}'.format(track, self.ws.name)) + self.log.info('%s candidates: %s', track, self.ws.name) def _album(self): """Get albums for album queue mode