X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fplayer.py;h=1d1f69315301e681933ea73a376118cacfd3876c;hb=80162143f725cbe604f7241e4dfc4929833470e5;hp=feaa4e3fe390960c16ae4057514d445532942dcf;hpb=41048503e9b3cf0fdc58e14f35f483889a0b05ae;p=mpd-sima.git diff --git a/sima/lib/player.py b/sima/lib/player.py index feaa4e3..1d1f693 100644 --- a/sima/lib/player.py +++ b/sima/lib/player.py @@ -23,13 +23,9 @@ # standard library import import logging -from difflib import get_close_matches from itertools import dropwhile # local import -from .meta import Artist -from .simastr import SimaStr -from ..utils.leven import levenshtein_ratio def blacklist(artist=False, album=False, track=False): #pylint: disable=C0111,W0212 @@ -48,7 +44,7 @@ def blacklist(artist=False, album=False, track=False): results = list() for elem in func(*args, **kwargs): if bl_getter(elem, add_not=True): - cls.log.debug('Blacklisted "{0}"'.format(elem)) + #cls.log.debug('Blacklisted "{0}"'.format(elem)) continue if track and cls.database.get_bl_album(elem, add_not=True): # filter album as well in track mode @@ -60,28 +56,6 @@ def blacklist(artist=False, album=False, track=False): return wrapper return decorated -def bl_artist(func): - def wrapper(*args, **kwargs): - cls = args[0] - if not args[0].database: - return func(*args, **kwargs) - result = func(*args, **kwargs) - if not result: - return - names = list() - for art in result.names: - if cls.database.get_bl_artist(art, add_not=True): - cls.log.debug('Blacklisted "{0}"'.format(art)) - continue - names.append(art) - if not names: - return - resp = Artist(name=names.pop(), mbid=result.mbid) - for name in names: - resp.add_alias(name) - return resp - return wrapper - class Player(object): """Player interface to inherit from. @@ -123,8 +97,8 @@ class Player(object): def find_track(self, artist, title=None): """ Find tracks for a specific artist or filtering with a track title - >>> player.find_track('The Beatles') - >>> player.find_track('Nirvana', title='Smells Like Teen Spirit') + >>> player.find_track(Artist('The Beatles')) + >>> player.find_track(Artist('Nirvana'), title='Smells Like Teen Spirit') Returns a list of Track objects """ @@ -149,52 +123,17 @@ class Player(object): """ raise NotImplementedError - @bl_artist def search_artist(self, artist): """ Search artists based on a fuzzy search in the media library - >>> bea = player.search_artist('The beatles') + >>> art = Artist(name='the beatles', mbid=) # mbid optional + >>> bea = player.search_artist(art) >>> print(bea.names) >>> ['The Beatles', 'Beatles', 'the beatles'] - Returns a list of strings (artist names) + Returns an Artist object """ - found = False - # Then proceed with fuzzy matching if got nothing - match = get_close_matches(artist.name, self.artists, 50, 0.73) - if not match: - return - if len(match) > 1: - self.log.debug('found close match for "%s": %s' % - (artist, '/'.join(match))) - # 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: - # Regular lowered string comparison - if artist.name.lower() == fuzz_art.lower(): - artist.add_alias(fuzz_art) - return artist - fzartist = SimaStr(artist.name) - for fuzz_art in match: - # Regular lowered string comparison - if artist.name.lower() == fuzz_art.lower(): - found = True - artist.add_alias(fuzz_art) - if artist.name != fuzz_art: - self.log.debug('"%s" matches "%s".' % (fuzz_art, artist)) - continue - # SimaStr string __eq__ (not regular string comparison here) - if fzartist == fuzz_art: - found = True - artist.add_alias(fuzz_art) - self.log.info('"%s" quite probably matches "%s" (SimaStr)' % - (fuzz_art, artist)) - if found: - if artist.aliases: - self.log.debug('Found: {}'.format('/'.join(artist.names))) - return artist - return + raise NotImplementedError def disconnect(self): """Closing client connection with the Player @@ -208,22 +147,42 @@ class Player(object): @property def artists(self): + #pylint: disable=C0111 raise NotImplementedError @property def state(self): + """Returns (play|stop|pause)""" + #pylint: disable=C0111 + raise NotImplementedError + + @property + def playmode(self): + """Returns a mapping + { + 'repeat': boolean, + 'random': boolean, + 'single': boolean, + 'consume': boolean, + … + } + """ + #pylint: disable=C0111 raise NotImplementedError @property def current(self): + #pylint: disable=C0111 raise NotImplementedError @property def queue(self): + #pylint: disable=C0111 raise NotImplementedError @property def playlist(self): + #pylint: disable=C0111 raise NotImplementedError # VIM MODLINE