X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fclient.py;h=7c0e5a7c365758d1cced6d0b412b88486a6abbc8;hb=194de8ab2773bd8e456590e3876a0aca1fe4d564;hp=c04b259a90a147e4d3545012f8232fcd8ff39270;hpb=caaf8f55d7110428724949dee23dd23050e74eff;p=mpd-sima.git diff --git a/sima/client.py b/sima/client.py index c04b259..7c0e5a7 100644 --- a/sima/client.py +++ b/sima/client.py @@ -96,7 +96,7 @@ class PlayerClient(Player): TODO: handle exception in command not going through _client_wrapper() (ie. remove…) """ - database = None # sima database (history, blaclist) + database = None # sima database (history, blacklist) def __init__(self, host="localhost", port="6600", password=None): super().__init__() @@ -217,7 +217,7 @@ class PlayerClient(Player): # Check against the actual string in artist list if artist.orig in self.artists: self.log.debug('found exact match for "%s"' % artist) - return [artist] + return [artist.orig] # Then proceed with fuzzy matching if got nothing match = get_close_matches(artist.orig, self.artists, 50, 0.73) if not match: @@ -288,9 +288,9 @@ class PlayerClient(Player): def monitor(self): curr = self.current try: - self._client.send_idle('database', 'playlist', 'player', 'options') + self.send_idle('database', 'playlist', 'player', 'options') select([self._client], [], [], 60) - ret = self._client.fetch_idle() + ret = self.fetch_idle() if self.__skipped_track(curr): ret.append('skipped') if 'database' in ret: @@ -299,8 +299,16 @@ class PlayerClient(Player): except (MPDError, IOError) as err: raise PlayerError("Couldn't init idle: %s" % err) + def clean(self): + """Clean blocking event (idle) and pending commands + """ + if 'idle' in self._client._pending: + self._client.noidle() + elif self._client._pending: + self.log.warning('pending commands: {}'.format(self._client._pending)) + def remove(self, position=0): - self._client.delete(position) + self.delete(position) def add(self, track): """Overriding MPD's add method to accept add signature with a Track @@ -313,7 +321,7 @@ class PlayerClient(Player): @property def state(self): - return str(self._client.status().get('state')) + return str(self.status().get('state')) @property def current(self):