]> kaliko git repositories - mpd-sima.git/blobdiff - sima/mpdclient.py
Revert previous refactoring around Exceptions
[mpd-sima.git] / sima / mpdclient.py
index e2f0e2c4566f19055ebab35da270381a930cdd7c..6bbe63dd7b97816a4ccd52cbdcef3efa795c3d99 100644 (file)
@@ -23,7 +23,7 @@ from logging import getLogger
 from select import select
 
 # external module
-from musicpd import MPDClient, MPDError
+from musicpd import MPDClient, MPDError as PlayerError
 
 
 # local import
@@ -31,11 +31,6 @@ from .lib.meta import Meta, Artist, Album
 from .lib.track import Track
 from .lib.simastr import SimaStr
 from .utils.leven import levenshtein_ratio
-from .utils.utils import MPDSimaException
-
-
-class PlayerError(MPDSimaException):
-    """Fatal error in the player."""
 
 
 # Some decorators
@@ -128,7 +123,7 @@ class MPD(MPDClient):
             if cmd in track_wrapped:
                 return tracks_wrapper(super().__getattr__(cmd))
             return super().__getattr__(cmd)
-        except OSError as err:
+        except OSError as err:  # socket errors
             raise PlayerError(err) from err
 
     def disconnect(self):
@@ -159,7 +154,7 @@ class MPD(MPDClient):
         if password:
             try:
                 self.password(password)
-            except (MPDError, OSError) as err:
+            except OSError as err:
                 raise PlayerError(f"Could not connect to '{host}': {err}") from err
         # Controls we have sufficient rights
         available_cmd = self.commands()
@@ -236,21 +231,21 @@ class MPD(MPDClient):
         """
         curr = self.current
         select_timeout = 5
-        while True:
-            self.send_idle('database', 'playlist', 'player', 'options')
-            _read, _, _ = select([self], [], [], select_timeout)
-            if _read:  # tries to read response
-                ret = self.fetch_idle()
-                if self._skipped_track(curr):
-                    ret.append('skipped')
-                if 'database' in ret:
-                    self._reset_cache()
-                return ret
-            #  Nothing to read, canceling idle
-            try:  # noidle cmd does not go through __getattr__, need to catch OSError then
+        try:  # noidle cmd does not go through __getattr__, need to catch OSError then
+            while True:
+                self.send_idle('database', 'playlist', 'player', 'options')
+                _read, _, _ = select([self], [], [], select_timeout)
+                if _read:  # tries to read response
+                    ret = self.fetch_idle()
+                    if self._skipped_track(curr):
+                        ret.append('skipped')
+                    if 'database' in ret:
+                        self._reset_cache()
+                    return ret
+                #  Nothing to read, canceling idle
                 self.noidle()
-            except OSError as err:
-                raise PlayerError(err) from err
+        except OSError as err:
+            raise PlayerError(err) from err
 
     def clean(self):
         """Clean blocking event (idle) and pending commands