# TODO: move to utils as a decorator
duration = self.daemon_conf.getint('sima', 'history_duration')
art_in_hist = list()
- for trk in self.sdb.get_history(duration=duration,
- artists=alist):
+ for trk in self.sdb.get_history(duration=duration, artists=alist):
if trk[0] not in art_in_hist:
art_in_hist.append(trk[0])
art_in_hist.reverse()
# initialize artists deque list to construct from DB
as_art = deque()
as_artists = self.ws().get_similar(artist=artist)
- self.log.debug('Requesting {1} for "{0}"'.format(artist,
- self.ws.name))
+ self.log.debug('Requesting {} for {!r}'.format(self.ws.name,artist))
try:
# TODO: let's propagate Artist type
[as_art.append(str(art)) for art in as_artists]
if not self.player.playlist:
return []
tolookfor = self.player.playlist[-1].get_artist()
- self.log.info('Looking for artist similar '
- 'to "{0.artist}"'.format(self.player.playlist[-1]))
+ self.log.info('Looking for artist similar to "{}"'.format(tolookfor))
similar = self.ws_similar_artists(tolookfor)
if not similar:
self.log.info('Got nothing from {0}!'.format(self.ws.name))
self.log.info('First five similar artist(s): {}...'.format(
' / '.join([a for a in list(similar)[0:5]])))
self.log.info('Looking availability in music library')
- ret = self.get_artists_from_player(similar)
+ ret = set(self.get_artists_from_player(similar))
ret_extra = None
if len(self.history) >= 2:
if self.plugin_conf.getint('depth') > 1:
ret_extra = self.get_recursive_similar_artist()
if ret_extra:
- ret = list(set(ret) | set(ret_extra))
+ ret = set(ret) | set(ret_extra)
if not ret:
self.log.warning('Got nothing from music library.')
self.log.warning('Try running in debug mode to guess why...')
return []
- self.log.info('Got {} artists in library'.format(len(ret)))
+ queued_artists = { trk.artist for trk in self.player.queue }
+ if ret & queued_artists:
+ self.log.debug('Removing already queued artist: {0}'.format(ret & queued_artists))
+ ret = ret - queued_artists
+ if self.player.current.artist in ret:
+ self.log.debug('Removing current artist: {0}'.format(self.player.current.artist))
+ ret = ret - {self.player.current.artist}
# Move around similars items to get in unplayed|not recently played
# artist first.
- return self._get_artists_list_reorg(ret)
+ self.log.info('Got {} artists in library'.format(len(ret)))
+ return self._get_artists_list_reorg(list(ret))
def _get_album_history(self, artist=None):
"""Retrieve album history"""