Source code for flexget.components.series.metainfo_series

from loguru import logger

from flexget import plugin
from flexget.event import event

from . import series as plugin_series

try:
    # NOTE: Importing other plugins is discouraged!
    from flexget.components.parsing.parsers import parser_common as plugin_parser_common
except ImportError:
    raise plugin.DependencyError(issued_by=__name__, missing='parser_common')

logger = logger.bind(name='metainfo_series')


[docs] class MetainfoSeries: """Check if entry appears to be a series, and populate series info if so.""" schema = {'type': 'boolean'} # Run after series plugin so we don't try to re-parse it's entries
[docs] @plugin.priority(120) def on_task_metainfo(self, task, config): # Don't run if we are disabled if config is False: return for entry in task.entries: # If series plugin already parsed this, don't touch it. if entry.get('series_name'): continue self.guess_entry(entry)
[docs] def guess_entry(self, entry, allow_seasonless=False, config=None): """Populate series_* fields for entries that are successfully parsed. :param dict config: A series config to be used. This will also cause 'path' and 'set' fields to be populated. """ if entry.get('series_parser') and entry['series_parser'].valid: # Return true if we already parsed this, false if series plugin parsed it return True identified_by = 'auto' if config and 'identified_by' in config: identified_by = config['identified_by'] parsed = plugin.get('parsing', self).parse_series( data=entry['title'], identified_by=identified_by, allow_seasonless=allow_seasonless ) if parsed and parsed.valid: parsed.name = plugin_parser_common.normalize_name( plugin_parser_common.remove_dirt(parsed.name) ) plugin_series.populate_entry_fields(entry, parsed, config) entry['series_guessed'] = True return True return False
[docs] @event('plugin.register') def register_plugin(): plugin.register(MetainfoSeries, 'metainfo_series', api_ver=2)