diff --git a/couchpotato/core/notifications/pushalot/__init__.py b/couchpotato/core/notifications/pushalot/__init__.py new file mode 100644 index 0000000..a2a297a --- /dev/null +++ b/couchpotato/core/notifications/pushalot/__init__.py @@ -0,0 +1,48 @@ +from .main import Pushalot + +def start(): + return Pushalot() + +config = [{ + 'name': 'pushalot', + 'groups': [ + { + 'tab': 'notifications', + 'list': 'notification_providers', + 'name': 'pushalot', + 'description': 'for Windows Phone and Windows 8', + 'options': [ + { + 'name': 'enabled', + 'default': 0, + 'type': 'enabler', + }, + { + 'name': 'auth_token', + 'label': 'Auth Token', + }, + { + 'name': 'silent', + 'label': 'Silent', + 'default': 0, + 'type': 'bool', + 'description': 'Don\'t send Toast notifications. Only update Live Tile', + }, + { + 'name': 'important', + 'label': 'High Priority', + 'default': 0, + 'type': 'bool', + 'description': 'Send message with High priority.', + }, + { + 'name': 'on_snatch', + 'default': 0, + 'type': 'bool', + 'advanced': True, + 'description': 'Also send message when movie is snatched.', + }, + ], + } + ], +}] diff --git a/couchpotato/core/notifications/pushalot/main.py b/couchpotato/core/notifications/pushalot/main.py new file mode 100644 index 0000000..f3c42a0 --- /dev/null +++ b/couchpotato/core/notifications/pushalot/main.py @@ -0,0 +1,37 @@ +from couchpotato.core.helpers.encoding import toUnicode, tryUrlencode +from couchpotato.core.logger import CPLog +from couchpotato.core.notifications.base import Notification +import traceback + +log = CPLog(__name__) + +class Pushalot(Notification): + + urls = { + 'api': 'https://pushalot.com/api/sendmessage' + } + + def notify(self, message = '', data = {}, listener = None): + if self.isDisabled(): return + + data = { + 'AuthorizationToken': self.conf('auth_token'), + 'Title': self.default_title, + 'Body': toUnicode(message), + 'LinkTitle': toUnicode("CouchPotato"), + 'link': toUnicode("https://couchpota.to/"), + 'IsImportant': self.conf('important'), + 'IsSilent': self.conf('silent'), + } + + headers = { + 'Content-type': 'application/x-www-form-urlencoded' + } + + try: + self.urlopen(self.urls['api'], headers = headers, params = data, multipart = True, show_error = False) + return True + except: + log.error('PushAlot failed: %s', traceback.format_exc()) + + return False