From eb0669f15cac95b4e6f87ff2fa002b96a76a8778 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 5 May 2012 15:42:37 +0200 Subject: [PATCH] Trakt.tv add password for protected api. fix #147 --- couchpotato/core/helpers/variable.py | 3 +++ .../core/providers/automation/trakt/__init__.py | 6 ++++++ couchpotato/core/providers/automation/trakt/main.py | 21 +++++++++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index 1f5f76a..b398d30 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -59,6 +59,9 @@ def flattenList(l): def md5(text): return hashlib.md5(text).hexdigest() +def sha1(text): + return hashlib.sha1(text).hexdigest() + def getExt(filename): return os.path.splitext(filename)[1][1:] diff --git a/couchpotato/core/providers/automation/trakt/__init__.py b/couchpotato/core/providers/automation/trakt/__init__.py index 88ab454..fca7af3 100644 --- a/couchpotato/core/providers/automation/trakt/__init__.py +++ b/couchpotato/core/providers/automation/trakt/__init__.py @@ -25,6 +25,12 @@ config = [{ 'name': 'automation_username', 'label': 'Username', }, + { + 'name': 'automation_password', + 'label': 'Password', + 'type': 'password', + 'description': 'When you have "Protect my data" checked on trakt.', + }, ], }, ], diff --git a/couchpotato/core/providers/automation/trakt/main.py b/couchpotato/core/providers/automation/trakt/main.py index 06a4872..e623b8f 100644 --- a/couchpotato/core/providers/automation/trakt/main.py +++ b/couchpotato/core/providers/automation/trakt/main.py @@ -1,6 +1,8 @@ -from couchpotato.core.helpers.variable import md5 +from couchpotato.core.event import addEvent +from couchpotato.core.helpers.variable import md5, sha1 from couchpotato.core.logger import CPLog from couchpotato.core.providers.automation.base import Automation +import base64 import json log = CPLog(__name__) @@ -13,6 +15,14 @@ class Trakt(Automation): 'watchlist': 'user/watchlist/movies.json/%s/', } + def __init__(self): + super(Trakt, self).__init__() + + addEvent('setting.save.trakt.automation_password', self.sha1Password) + + def sha1Password(self, value): + return sha1(value) if value else '' + def getIMDBids(self): if self.isDisabled(): @@ -31,6 +41,13 @@ class Trakt(Automation): def call(self, method_url): + if self.conf('automation_password'): + headers = { + 'Authorization': "Basic %s" % base64.encodestring('%s:%s' % (self.conf('automation_username'), self.conf('automation_password')))[:-1] + } + else: + headers = {} + cache_key = 'trakt.%s' % md5(method_url) - json_string = self.getCache(cache_key, self.urls['base'] + method_url) + json_string = self.getCache(cache_key, self.urls['base'] + method_url, headers = headers) return json.loads(json_string)