diff --git a/couchpotato/core/providers/automation/flixster/main.py b/couchpotato/core/providers/automation/flixster/main.py index 429f9fb7..7fd2f717 100644 --- a/couchpotato/core/providers/automation/flixster/main.py +++ b/couchpotato/core/providers/automation/flixster/main.py @@ -39,7 +39,7 @@ class Flixster(Automation): if not enablers[index]: continue - data = self.getJsonData(self.url % user_id) + data = self.getJsonData(self.url % user_id, decode_from = 'iso-8859-1') for movie in data: movies.append({'title': movie['movie']['title'], 'year': movie['movie']['year'] }) diff --git a/couchpotato/core/providers/base.py b/couchpotato/core/providers/base.py index 2fa8c11d..60420a13 100644 --- a/couchpotato/core/providers/base.py +++ b/couchpotato/core/providers/base.py @@ -1,5 +1,5 @@ -import logging from couchpotato.core.event import addEvent, fireEvent +from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.helpers.variable import tryFloat, mergeDicts, md5, \ possibleTitles, getTitle from couchpotato.core.logger import CPLog @@ -8,6 +8,7 @@ from couchpotato.environment import Env from urlparse import urlparse import cookielib import json +import logging import re import time import traceback @@ -63,13 +64,17 @@ class Provider(Plugin): return self.is_available.get(host, False) - def getJsonData(self, url, **kwargs): + def getJsonData(self, url, decode_from = None, **kwargs): cache_key = '%s%s' % (md5(url), md5('%s' % kwargs.get('params', {}))) data = self.getCache(cache_key, url, **kwargs) if data: try: + data = data.strip() + if decode_from: + data = data.decode(decode_from) + return json.loads(data) except: log.error('Failed to parsing %s: %s', (self.getName(), traceback.format_exc()))