Source code for flexget.components.series.all_series

from flexget import plugin
from flexget.event import event

from . import series as plugin_series


[docs] class FilterAllSeries(plugin_series.FilterSeriesBase): """Grabs all entries that appear to be series episodes in a task. This plugin just configures the series plugin dynamically with all series from the task. It can take any of the options of the series plugin. Example:: all_series: yes :: all_series: quality: hdtv+ propers: no """ @property def schema(self): return {'oneOf': [{'type': 'boolean'}, self.settings_schema]} # Run after series and metainfo series plugins
[docs] @plugin.priority(115) def on_task_metainfo(self, task, config): if not config: # Don't run when we are disabled return if task.is_rerun: # Since we are running after task start phase, make sure not to merge into the config again on reruns return # Generate the group settings for series plugin group_settings = {} if isinstance(config, dict): group_settings = config group_settings.setdefault('identified_by', 'auto') # Generate a list of unique series that metainfo_series can parse for this task guess_entry = plugin.get('metainfo_series', 'all_series').guess_entry guessed_series = {} for entry in task.entries: if guess_entry(entry, config=group_settings): guessed_series.setdefault( plugin_series.normalize_series_name(entry['series_name']), entry['series_name'] ) # Combine settings and series into series plugin config format all_series = { 'settings': {'all_series': group_settings}, 'all_series': list(guessed_series.values()), } # Merge our config in to the main series config self.merge_config(task, all_series)
[docs] @event('plugin.register') def register_plugin(): plugin.register(FilterAllSeries, 'all_series', api_ver=2)