Source code for flexget.components.notify.notifiers.pushalot
from loguru import logger
from requests.exceptions import RequestException
from flexget import plugin
from flexget.config_schema import one_or_more
from flexget.event import event
from flexget.plugin import PluginWarning
from flexget.utils.requests import Session as RequestSession
from flexget.utils.requests import TimedLimiter
plugin_name = 'pushalot'
logger = logger.bind(name=plugin_name)
PUSHALOT_URL = 'https://pushalot.com/api/sendmessage'
requests = RequestSession(max_retries=3)
requests.add_domain_limiter(TimedLimiter('pushalot.com', '5 seconds'))
[docs]
class PushalotNotifier:
"""Send a Pushalot notification.
Example::
notify:
entries:
via:
- pushalot:
token: <string> Authorization token (can also be a list of tokens) - Required
link: <string> (default: '{{imdb_url}}')
linktitle: <string> (default: (none))
important: <boolean> (default is False)
silent: <boolean< (default is False)
image: <string> (default: (none))
source: <string> (default is 'FlexGet')
timetolive: <integer>
"""
schema = {
'type': 'object',
'properties': {
'api_key': one_or_more({'type': 'string'}),
'url': {'type': 'string'},
'url_title': {'type': 'string'},
'important': {'type': 'boolean', 'default': False},
'silent': {'type': 'boolean', 'default': False},
'image': {'type': 'string'},
'source': {'type': 'string', 'default': 'FlexGet'},
'timetolive': {'type': 'integer', 'maximum': 43200, 'minimum': 0},
},
'required': ['api_key'],
'additionalProperties': False,
}
[docs]
def notify(self, title, message, config):
"""Send a Pushalot notification."""
notification = {
'Title': title,
'Body': message,
'LinkTitle': config.get('url_title'),
'Link': config.get('url'),
'IsImportant': config.get('important'),
'IsSilent': config.get('silent'),
'Image': config.get('image'),
'Source': config.get('source'),
'TimeToLive': config.get('timetolive'),
}
if not isinstance(config['api_key'], list):
config['api_key'] = [config['api_key']]
for key in config['api_key']:
notification['AuthorizationToken'] = key
try:
requests.post(PUSHALOT_URL, json=notification)
except RequestException as e:
raise PluginWarning(repr(e))
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(PushalotNotifier, plugin_name, api_ver=2, interfaces=['notifiers'])