Source code for flexget.components.archives.archives

from loguru import logger

from flexget import plugin
from flexget.components.archives import utils
from flexget.event import event

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


[docs] class FilterArchives: """Accepts entries that are valid Zip or RAR archives. This plugin requires the rarfile Python module and unrar command line utility to handle RAR archives. Configuration: unrar_tool: Specifies the path of the unrar tool. Only necessary if its location is not defined in the operating system's PATH environment variable. """ schema = { 'anyOf': [ {'type': 'boolean'}, { 'type': 'object', 'properties': {'unrar_tool': {'type': 'string'}}, 'additionalProperties': False, }, ] }
[docs] def prepare_config(self, config): """Prepare config for processing.""" if not isinstance(config, dict): config = {} config.setdefault('unrar_tool', '') return config
[docs] @plugin.priority(200) def on_task_filter(self, task, config): """Task handler for archives.""" if isinstance(config, bool) and not config: return config = self.prepare_config(config) utils.rarfile_set_tool_path(config) for entry in task.entries: archive_path = entry.get('location') entry.accept() if archive_path and utils.is_archive(archive_path) else entry.reject()
[docs] @event('plugin.register') def register_plugin(): plugin.register(FilterArchives, 'archives', api_ver=2)