Source code for flexget.plugins.output.html
import os
from loguru import logger
from flexget import plugin
from flexget.event import event
from flexget.utils.template import RenderError, get_template, render_from_task
PLUGIN_NAME = 'make_html'
logger = logger.bind(name=PLUGIN_NAME)
[docs]
class OutputHtml:
schema = {
'type': 'object',
'properties': {'template': {'type': 'string'}, 'file': {'type': 'string'}},
'required': ['file'],
'additionalProperties': False,
}
[docs]
def on_task_output(self, task, config):
# Use the default template if none is specified
if not config.get('template'):
config['template'] = 'html.template'
filename = os.path.expanduser(config['template'])
output = os.path.expanduser(config['file'])
# Output to config directory if absolute path has not been specified
if not os.path.isabs(output):
output = os.path.join(task.manager.config_base, output)
# create the template
try:
template = render_from_task(get_template(filename), task)
logger.verbose('Writing output html to {}', output)
with open(output, 'wb') as f:
f.write(template.encode('utf-8'))
except RenderError as e:
logger.error('Error while rendering task {}, Error: {}', task, e)
raise plugin.PluginError('There was an error rendering the specified template')
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(OutputHtml, PLUGIN_NAME, api_ver=2)