]> kaliko git repositories - mpd-sima.git/commitdiff
Fixed regression, do not queue already queued artists
authorkaliko <kaliko@azylum.org>
Thu, 26 Jun 2014 21:02:18 +0000 (23:02 +0200)
committerkaliko <kaliko@azylum.org>
Thu, 26 Jun 2014 21:02:18 +0000 (23:02 +0200)
doc/Changelog
sima/lib/webserv.py

index e0a503e0542b825a4a0956ff0640f280e7c8178d..092004837d438b1035c183fa980b6cbf2f2aff20 100644 (file)
@@ -1,7 +1,9 @@
 MPD_sima v0.12.2
 
  * Add some randomness to track selection
+ * Do not queue artist already queued (regression)
  * …
+
 -- kaliko jack <kaliko@azylum.org>  UNRELEASED
 
 
index 30a7eac376bf8b8d0b40a12635d8d055dd8f32ec..4a048e9535696dbef3e6a03932ca2d60cea4b045 100644 (file)
@@ -236,18 +236,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)