]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/webserv.py
Use albumartist to fetch similar artists
[mpd-sima.git] / sima / lib / webserv.py
index 30a7eac376bf8b8d0b40a12635d8d055dd8f32ec..f1afd55a41b7e2f279fed0d3ec0d02bd28ec6594 100644 (file)
@@ -227,8 +227,7 @@ class WebService(Plugin):
         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))
@@ -236,18 +235,22 @@ class WebService(Plugin):
         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 = list(ret - queued_artists)
         # Move around similars items to get in unplayed|not recently played
         # artist first.
         return self._get_artists_list_reorg(ret)