Source code for flexget.plugins.clients.nzbget
from loguru import logger
from flexget import plugin
from flexget.event import event
logger = logger.bind(name='nzbget')
[docs]
class OutputNzbget:
"""The nzbget plugin.
Example::
nzbget:
url: http://nzbget:12345@localhost:6789/xmlrpc
category: movies
priority: 0
top: False
"""
schema = {
'type': 'object',
'properties': {
'url': {'type': 'string'},
'category': {'type': 'string', 'default': ''},
'priority': {'type': 'integer', 'default': 0},
'top': {'type': 'boolean', 'default': False},
},
'required': ['url'],
'additionalProperties': False,
}
[docs]
def on_task_output(self, task, config):
from xmlrpc.client import ServerProxy
params = dict(config)
server = ServerProxy(params['url'])
for entry in task.accepted:
if task.options.test:
logger.info('Would add into nzbget: {}', entry['title'])
continue
# allow overriding the category
if 'category' in entry:
params['category'] = entry['category']
try:
server.appendurl(
entry['title'] + '.nzb',
params['category'],
params['priority'],
params['top'],
entry['url'],
)
logger.info('Added `{}` to nzbget', entry['title'])
except Exception as e:
logger.critical('rpc call to nzbget failed: {}', e)
entry.fail('could not call appendurl via RPC')
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(OutputNzbget, 'nzbget', api_ver=2)