Source code for flexget.plugins.modify.plugin_priority
from loguru import logger
from flexget import plugin
from flexget.event import event
logger = logger.bind(name='p_priority')
[docs]
class PluginPriority:
"""Allow modifying plugin priorities from default values.
Example::
plugin_priority:
ignore: 50
series: 100
"""
schema = {'type': 'object', 'additionalProperties': {'type': 'integer'}}
def __init__(self):
self.priorities = {}
[docs]
def on_task_start(self, task, config):
self.priorities = {}
names = []
for name, priority in config.items():
names.append(name)
originals = self.priorities.setdefault(name, {})
for phase, phase_event in plugin.plugins[name].phase_handlers.items():
originals[phase] = phase_event.priority
logger.debug('stored {} original value {}', phase, phase_event.priority)
phase_event.priority = priority
logger.debug('set {} new value {}', phase, priority)
logger.debug('Changed priority for: {}', ', '.join(names))
[docs]
def on_task_exit(self, task, config):
if not self.priorities:
logger.debug('nothing changed, aborting restore')
return
names = []
for name in list(config.keys()):
names.append(name)
originals = self.priorities[name]
for phase, priority in originals.items():
plugin.plugins[name].phase_handlers[phase].priority = priority
logger.debug('Restored priority for: {}', ', '.join(names))
self.priorities = {}
on_task_abort = on_task_exit
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(PluginPriority, 'plugin_priority', api_ver=2)