]> kaliko git repositories - mpd-sima.git/blobdiff - sima/mpdclient.py
Add more info in crash report (Closes #56)
[mpd-sima.git] / sima / mpdclient.py
index 45d3dcdf767ab4bbc21c77a2629d45a0b60a3bbc..ebf39a787c6be6905a7bd2f1fdca023ed21a6a26 100644 (file)
@@ -22,7 +22,7 @@ from functools import wraps
 from logging import getLogger
 
 # external module
-from musicpd import MPDClient, MPDError
+from musicpd import MPDClient, MPDError as PlayerError
 
 
 # local import
@@ -32,10 +32,6 @@ from .lib.simastr import SimaStr
 from .utils.leven import levenshtein_ratio
 
 
-class PlayerError(MPDError):
-    """Fatal error in the player."""
-
-
 # Some decorators
 def bl_artist(func):
     def wrapper(*args, **kwargs):
@@ -119,9 +115,12 @@ class MPD(MPDClient):
     def __getattr__(self, cmd):
         """Wrapper around MPDClient calls for abstract overriding"""
         track_wrapped = {'currentsong', 'find', 'playlistinfo', }
-        if cmd in track_wrapped:
-            return tracks_wrapper(super().__getattr__(cmd))
-        return super().__getattr__(cmd)
+        try:
+            if cmd in track_wrapped:
+                return tracks_wrapper(super().__getattr__(cmd))
+            return super().__getattr__(cmd)
+        except OSError as err:
+            raise PlayerError(err)
 
     def disconnect(self):
         """Overriding explicitly MPDClient.disconnect()"""
@@ -139,20 +138,20 @@ class MPD(MPDClient):
         try:
             super().connect(host, port)
         # Catch socket errors
-        except IOError as err:
+        except OSError as err:
             raise PlayerError('Could not connect to "%s:%s": %s' %
                               (host, port, err.strerror))
         # Catch all other possible errors
         # ConnectionError and ProtocolError are always fatal.  Others may not
         # be, but we don't know how to handle them here, so treat them as if
         # they are instead of ignoring them.
-        except MPDError as err:
+        except PlayerError as err:
             raise PlayerError('Could not connect to "%s:%s": %s' %
                               (host, port, err))
         if password:
             try:
                 self.password(password)
-            except (MPDError, IOError) as err:
+            except (PlayerError, OSError) as err:
                 raise PlayerError("Could not connect to '%s': %s" % (host, err))
         # Controls we have sufficient rights
         available_cmd = self.commands()
@@ -230,10 +229,7 @@ class MPD(MPDClient):
             * skipped   current track skipped
         """
         curr = self.current
-        try:
-            ret = self.idle('database', 'playlist', 'player', 'options')
-        except (MPDError, IOError) as err:
-            raise PlayerError("Couldn't init idle: %s" % err)
+        ret = self.idle('database', 'playlist', 'player', 'options')
         if self._skipped_track(curr):
             ret.append('skipped')
         if 'database' in ret: