Source code for flexget.plugins.input.from_task
from loguru import logger
from flexget import plugin
from flexget.entry import Entry
from flexget.event import event
from flexget.task import Task
logger = logger.bind(name='from_task')
[docs]
class FromTask:
"""An input plugin which returns accepted entries from another task."""
schema = {'type': 'string'}
[docs]
def on_task_input(self, task, config):
target_task_name = config
subtask_name = f'{task.name}>{target_task_name}'
subtask_config = task.manager.config['tasks'].get(target_task_name, {})
# TODO: This seen disabling is sorta hacky, is there a better way?
subtask_config.setdefault('seen', False)
input_task = Task(
task.manager,
subtask_name,
config=subtask_config,
# TODO: Do we want to pass other options through?
# TODO: Manual plugin semantics and allow_manual are confusing. Make it less confusing somehow?
options={'allow_manual': True, 'tasks': [subtask_name]},
output=task.output,
session_id=task.session_id,
priority=task.priority,
)
logger.verbose('Running task `{}` as subtask.', target_task_name)
input_task.execute()
logger.verbose('Finished running subtask `{}`.', target_task_name)
# Create fresh entries to reset state and strip association to old task
return [Entry(e) for e in input_task.accepted]
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(FromTask, 'from_task', api_ver=2)