X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fclient.py;h=8bb5de3192947d706e669651cdd38fb7a1f9d732;hb=93ad5efaffc6e4fd9476513ee16386e21ea4049d;hp=9c12f8be1a9e55456636a6bb88fac9d76a6d0587;hpb=acb8b5cf14154b4594a324686f50ee4f68166699;p=mpd-sima.git diff --git a/sima/client.py b/sima/client.py index 9c12f8b..8bb5de3 100644 --- a/sima/client.py +++ b/sima/client.py @@ -62,7 +62,7 @@ def bl_artist(func): names = list() for art in result.names: if cls.database.get_bl_artist(art, add_not=True): - cls.log.debug('Blacklisted "{0}"'.format(art)) + cls.log.debug('Blacklisted "%s"', art) continue names.append(art) if not names: @@ -159,9 +159,9 @@ class PlayerClient(Player): self.log.info('Player: Initialising cache!') self._cache = {'artists': frozenset(), 'nombid_artists': frozenset(),} - self._cache['artists'] = frozenset(self._execute('list', ['artist'])) + self._cache['artists'] = frozenset(filter(None, self._execute('list', ['artist']))) if Artist.use_mbid: - self._cache['nombid_artists'] = frozenset(self._execute('list', ['artist', 'musicbrainz_artistid', ''])) + self._cache['nombid_artists'] = frozenset(filter(None, self._execute('list', ['artist', 'musicbrainz_artistid', '']))) @blacklist(track=True) def find_track(self, artist, title=None): @@ -198,8 +198,6 @@ class PlayerClient(Player): if exact_m: _ = [artist.add_alias(name) for name in exact_m] found = True - else: - artist = Artist(name=artist.name) # then complete with fuzzy search on artist with no musicbrainz_artistid if artist.mbid: # we already performed a lookup on artists with mbid set @@ -215,12 +213,13 @@ class PlayerClient(Player): # Does not perform fuzzy matching on short and single word strings # Only lowercased comparison if ' ' not in artist.name and len(artist.name) < 8: - for fuzz_art in match: + for close_art in match: # Regular lowered string comparison - if artist.name.lower() == fuzz_art.lower(): - artist.add_alias(fuzz_art) + if artist.name.lower() == close_art.lower(): + artist.add_alias(close_art) return artist - fzartist = SimaStr(artist.name) + else: + return for fuzz_art in match: # Regular lowered string comparison if artist.name.lower() == fuzz_art.lower(): @@ -230,7 +229,7 @@ class PlayerClient(Player): self.log.debug('"%s" matches "%s".', fuzz_art, artist) continue # SimaStr string __eq__ (not regular string comparison here) - if fzartist == fuzz_art: + if SimaStr(artist.name) == fuzz_art: found = True artist.add_alias(fuzz_art) self.log.info('"%s" quite probably matches "%s" (SimaStr)', @@ -339,6 +338,18 @@ class PlayerClient(Player): def state(self): return str(self.status().get('state')) + @property + def playmode(self): + plm = {'repeat': None, + 'single': None, + 'random': None, + 'consume': None, + } + for key, val in self.status().items(): + if key in plm.keys(): + plm.update({key:bool(int(val))}) + return plm + @property def current(self): return self.currentsong()