From b82319cb5444ee7cdc6c60603121a0d5ceb857c7 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 25 Mar 2013 10:48:59 +0100 Subject: [PATCH] Use existing Trakt auth settings and other cleanup --- couchpotato/core/notifications/base.py | 6 ++++-- couchpotato/core/notifications/trakt/__init__.py | 21 ++++----------------- couchpotato/core/notifications/trakt/main.py | 23 +++++++++++------------ 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/couchpotato/core/notifications/base.py b/couchpotato/core/notifications/base.py index 2604ef4..8ae4bb8 100644 --- a/couchpotato/core/notifications/base.py +++ b/couchpotato/core/notifications/base.py @@ -2,13 +2,15 @@ from couchpotato.api import addApiView from couchpotato.core.event import addEvent from couchpotato.core.helpers.request import jsonified from couchpotato.core.logger import CPLog -from couchpotato.core.plugins.base import Plugin +from couchpotato.core.providers.base import Provider from couchpotato.environment import Env log = CPLog(__name__) -class Notification(Plugin): +class Notification(Provider): + + type = 'notification' default_title = Env.get('appname') test_message = 'ZOMG Lazors Pewpewpew!' diff --git a/couchpotato/core/notifications/trakt/__init__.py b/couchpotato/core/notifications/trakt/__init__.py index 5a3ec72..b119736 100644 --- a/couchpotato/core/notifications/trakt/__init__.py +++ b/couchpotato/core/notifications/trakt/__init__.py @@ -8,9 +8,10 @@ config = [{ 'groups': [ { 'tab': 'notifications', - 'name': 'trakt_notification', + 'list': 'notification_providers', + 'name': 'trakt', 'label': 'Trakt', - 'description': 'add movies to your collection once downloaded', + 'description': 'add movies to your collection once downloaded. Fill in your username and password in the Automation Trakt settings', 'options': [ { 'name': 'notification_enabled', @@ -23,21 +24,7 @@ config = [{ 'default': False, 'type': 'bool', }, - { - 'name': 'automation_api_key', - 'label': 'Apikey', - }, - { - 'name': 'automation_username', - 'label': 'Username', - }, - { - 'name': 'automation_password', - 'label': 'Password', - 'type': 'password', - 'description': 'Required even if your account is unprotected.', - }, ], } ], -}] \ No newline at end of file +}] diff --git a/couchpotato/core/notifications/trakt/main.py b/couchpotato/core/notifications/trakt/main.py index 94fecb1..63c1905 100644 --- a/couchpotato/core/notifications/trakt/main.py +++ b/couchpotato/core/notifications/trakt/main.py @@ -1,14 +1,12 @@ from couchpotato.core.logger import CPLog from couchpotato.core.notifications.base import Notification -import json -import urllib2 log = CPLog(__name__) class Trakt(Notification): urls = { - 'base': 'http://api.trakt.tv/', + 'base': 'http://api.trakt.tv/%s', 'library': 'movie/library/%s', 'unwatchlist': 'movie/unwatchlist/%s', } @@ -17,17 +15,17 @@ class Trakt(Notification): def notify(self, message = '', data = {}, listener = None): if self.isDisabled(): return - if not data: return + post_data = { 'username': self.conf('automation_username'), 'password' : self.conf('automation_password'), - 'movies': [ { + 'movies': [{ 'imdb_id': data['library']['identifier'], 'title': data['library']['titles'][0]['title'], 'year': data['library']['year'] - } ] - } - result = False + }] if data else [] + } + result = self.call((self.urls['library'] % self.conf('automation_api_key')), post_data) if self.conf('remove_watchlist_enabled'): result = result and self.call((self.urls['unwatchlist'] % self.conf('automation_api_key')), post_data) @@ -35,14 +33,15 @@ class Trakt(Notification): return result def call(self, method_url, post_data): - log.info('opening url: ' + self.urls['base'] + method_url + ', post: ' + str(post_data)) + try: - response = urllib2.urlopen(self.urls['base'] + method_url, json.dumps(post_data)) + response = self.getJsonData(self.urls['base'] % method_url, params = post_data, cache_timeout = 1) if response: - if json.load(response).get('status') == "success": + if response.get('status') == "success": log.info('Successfully called Trakt') return True except: pass + log.error('Failed to call trakt, check your login.') - return False \ No newline at end of file + return False