Source code for flexget.plugins.filter.quality
from loguru import logger
from flexget import plugin
from flexget.config_schema import one_or_more
from flexget.event import event
from flexget.utils import qualities
logger = logger.bind(name='quality')
[docs]
class FilterQuality:
"""Rejects all entries that don't have one of the specified qualities.
Example::
quality:
- hdtv
"""
schema = one_or_more({'type': 'string', 'format': 'quality_requirements'})
# Run before series and imdb plugins, so correct qualities are chosen
[docs]
@plugin.priority(175)
def on_task_filter(self, task, config):
if not isinstance(config, list):
config = [config]
reqs = [qualities.Requirements(req) for req in config]
for entry in task.entries:
if entry.get('quality') is None:
entry.reject("Entry doesn't have a quality")
continue
if not any(req.allows(entry['quality']) for req in reqs):
text_reqs = ', '.join(f'`{req}`' for req in reqs)
entry.reject(
f'`{entry["quality"]}` does not match any of quality requirements: {text_reqs}'
)
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(FilterQuality, 'quality', api_ver=2)