Source code for flexget.plugins.modify.path_by_ext

import mimetypes

from loguru import logger

from flexget import plugin
from flexget.event import event

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


[docs] class PluginPathByExt: """Allow specifying path based on content-type. Example:: path_by_ext: torrent: ~/watch/torrent/ nzb: ~/watch/nzb/ """ schema = {'type': 'object'}
[docs] def on_task_modify(self, task, config): self.ext(task, config, self.set_path)
[docs] def set_path(self, entry, path): logger.debug('Setting {} path to {}', entry['title'], path) entry['path'] = path
[docs] def ext(self, task, config, callback): for entry in task.entries: if 'mime-type' in entry: # check if configuration has mimetype that entry has if entry['mime-type'] in config: callback(entry, config[entry['mime-type']]) # check if entry mimetype extension matches in config ext = mimetypes.types_map.get(entry['mime-type']) path = config.get(ext) or config.get(ext[1:]) if path: callback(entry, path) else: logger.debug('Unknown mimetype {}', entry['mime-type']) else: # try to find from url for ext, path in config.items(): if entry['url'].endswith('.' + ext): callback(entry, path)
[docs] @event('plugin.register') def register_plugin(): plugin.register(PluginPathByExt, 'path_by_ext', api_ver=2)