X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fmpdclient.py;fp=sima%2Fmpdclient.py;h=c4ebadeaa7e1d4453aa92d8bbda5830c0715842e;hb=94c7b5c9c88a414afd30aa91b133afec6f3c4b6a;hp=3bd13aef7b4b3705c092f086c034723d1b364680;hpb=ac5fddf648c74fa4da05bad4c1b82383faca74e4;p=mpd-sima.git diff --git a/sima/mpdclient.py b/sima/mpdclient.py index 3bd13ae..c4ebade 100644 --- a/sima/mpdclient.py +++ b/sima/mpdclient.py @@ -238,21 +238,23 @@ 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 + except MPDError as err: # hight level MPD client errors + raise PlayerError(err) from err def clean(self): """Clean blocking event (idle) and pending commands