-def blacklist(artist=False, album=False, track=False):
- #pylint: disable=C0111,W0212
- field = (artist, album, track)
- def decorated(func):
- def wrapper(*args, **kwargs):
- cls = args[0]
- boolgen = (bl for bl in field)
- bl_fun = (cls._Plugin__daemon.sdb.get_bl_artist,
- cls._Plugin__daemon.sdb.get_bl_album,
- cls._Plugin__daemon.sdb.get_bl_track,)
- #bl_getter = next(fn for fn, bl in zip(bl_fun, boolgen) if bl is True)
- bl_getter = next(dropwhile(lambda _: not next(boolgen), bl_fun))
- cls.log.debug('using {0} as bl filter'.format(bl_getter.__name__))
- if artist:
- results = func(*args, **kwargs)
- for elem in results:
- if bl_getter(elem, add_not=True):
- cls.log.info('Blacklisted: {0}'.format(elem))
- results.remove(elem)
- return results
- if track:
- for elem in args[1]:
- if bl_getter(elem, add_not=True):
- cls.log.info('Blacklisted: {0}'.format(elem))
- args[1].remove(elem)
- return func(*args, **kwargs)
- return wrapper
- return decorated
-
-