]> kaliko git repositories - mpd-sima.git/blobdiff - sima/client.py
Minor log message enhancement
[mpd-sima.git] / sima / client.py
index 8122fdcd0f49a8a258dc096ef3c3b74a902e8cca..b3c9591e28b7d949885d05ff68feac0a95a7c28f 100644 (file)
@@ -21,6 +21,7 @@ except ImportError as err:
 # local import
 from .lib.player import Player
 from .lib.track import Track
+from .lib.album import Album
 from .lib.simastr import SimaStr
 
 
@@ -85,10 +86,6 @@ class PlayerClient(Player):
         wrapper = self._execute
         return lambda *args: wrapper(command, args)
 
-    def __del__(self):
-        """Avoid hanging sockets"""
-        self.disconnect()
-
     def _execute(self, command, args):
         self._write_command(command, args)
         return self._client_wrapper()
@@ -213,24 +210,26 @@ class PlayerClient(Player):
             return alb_art_search
         return self.find('artist', artist, 'album', album)
 
-    #@blacklist(album=True)
+    @blacklist(album=True)
     def find_albums(self, artist):
         """
         Fetch all albums for "AlbumArtist"  == artist
         Filter albums returned for "artist" == artist since MPD returns any
                album containing at least a single track for artist
         """
-        albums = set()
-        albums.update(self.list('album', 'albumartist', artist))
+        albums = []
+        kwalbart = {'albumartist':artist, 'artist':artist}
+        for album in self.list('album', 'albumartist', artist):
+            if album not in albums:
+                albums.append(Album(name=album, **kwalbart))
         for album in self.list('album', 'artist', artist):
             arts = set([trk.artist for trk in self.find('album', album)])
-            if len(arts) < 2:
-                albums.add(album)
-            else:
+            if len(arts) < 2:  # TODO: better heuristic, use a ratio instead
+                if album not in albums:
+                    albums.append(Album(name=album, albumartist=artist))
+            elif (album and album not in albums):
                 self.log.debug('"{0}" probably not an album of "{1}"'.format(
-                             album, artist) + '({0})'.format('/'.join(arts)))
-        if albums:
-            self.log.debug('Albums candidate: {0}'.format('/'.join(albums)))
+                               album, artist) + '({0})'.format('/'.join(arts)))
         return albums
 
     def monitor(self):