]> kaliko git repositories - mpd-sima.git/blobdiff - sima/client.py
Fetch as much as possible from echonest
[mpd-sima.git] / sima / client.py
index 96ca7250092072ddb9f51a4140ff505db6d270c1..6cd3802396688a01bc683318815d5e40aedb6a54 100644 (file)
@@ -21,7 +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.meta import Album
 from .lib.simastr import SimaStr
 
 
@@ -57,7 +57,7 @@ def blacklist(artist=False, album=False, track=False):
     return decorated
 
 class PlayerClient(Player):
-    """MPC Client
+    """MPD Client
     From python-musicpd:
         _fetch_nothing  …
         _fetch_item     single str
@@ -69,7 +69,7 @@ class PlayerClient(Player):
         _fetch_songs    list of dict, especially tracks
         _fetch_plugins,
     TODO: handle exception in command not going through _client_wrapper() (ie.
-          find_aa, remove…)
+          remove…)
     """
     database = None  # sima database (history, blaclist)
 
@@ -86,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()
@@ -231,7 +227,7 @@ class PlayerClient(Player):
             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 not in albums:
+            elif (album and album not in albums):
                 self.log.debug('"{0}" probably not an album of "{1}"'.format(
                                album, artist) + '({0})'.format('/'.join(arts)))
         return albums
@@ -333,6 +329,7 @@ class PlayerClient(Player):
     def disconnect(self):
         # Try to tell MPD we're closing the connection first
         try:
+            self._client.noidle()
             self._client.close()
         # If that fails, don't worry, just ignore it and disconnect
         except (MPDError, IOError):