From 66dfe75f7312a94b45aca811ece790979b932575 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 14 Jan 2012 12:04:53 +0100 Subject: [PATCH] Log errors via API --- couchpotato/core/plugins/base.py | 6 ++++++ couchpotato/core/plugins/log/main.py | 21 ++++++++++++++++++++- couchpotato/core/providers/nzb/x264/main.py | 2 +- couchpotato/templates/_desktop.html | 16 ++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 05826609..3f9519cb 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -93,6 +93,12 @@ class Plugin(object): socket.setdefaulttimeout(timeout) + # Fill in some headers + if not headers.get('Referer'): + headers['Referer'] = urlparse(url).hostname + if not headers.get('User-Agent'): + headers['User-Agent'] = '' + host = urlparse(url).hostname self.wait(host) diff --git a/couchpotato/core/plugins/log/main.py b/couchpotato/core/plugins/log/main.py index 25bb783d..00d2baf0 100644 --- a/couchpotato/core/plugins/log/main.py +++ b/couchpotato/core/plugins/log/main.py @@ -1,5 +1,5 @@ from couchpotato.api import addApiView -from couchpotato.core.helpers.request import jsonified, getParam +from couchpotato.core.helpers.request import jsonified, getParam, getParams from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin from couchpotato.environment import Env @@ -14,6 +14,7 @@ class Logging(Plugin): def __init__(self): addApiView('logging.get', self.get) addApiView('logging.clear', self.clear) + addApiView('logging.log', self.log) def get(self): @@ -67,3 +68,21 @@ class Logging(Plugin): return jsonified({ 'success': True }) + + def log(self): + + params = getParams() + + try: + log_message = 'API log: %s' % params + try: + getattr(log, params.get('type', 'error'))(log_message) + except: + log.error(log_message) + except: + log.error('Couldn\'t log via API: %s' % params) + + + return jsonified({ + 'success': True + }) diff --git a/couchpotato/core/providers/nzb/x264/main.py b/couchpotato/core/providers/nzb/x264/main.py index 9224acc9..c4d80531 100644 --- a/couchpotato/core/providers/nzb/x264/main.py +++ b/couchpotato/core/providers/nzb/x264/main.py @@ -23,7 +23,7 @@ class X264(NZBProvider): if self.isDisabled() or not self.isAvailable(self.urls['search']) or not quality.get('hd', False): return results - q = '%s %s' % (movie['library']['titles'][0]['title'], quality.get('identifier')) + q = '%s %s %s' % (movie['library']['titles'][0]['title'], movie['library']['year'], quality.get('identifier')) url = self.urls['search'] % quote_plus(q) cache_key = 'x264.%s' % q diff --git a/couchpotato/templates/_desktop.html b/couchpotato/templates/_desktop.html index 637aa61f..edef184b 100644 --- a/couchpotato/templates/_desktop.html +++ b/couchpotato/templates/_desktop.html @@ -52,6 +52,22 @@ 'is_remote': false }); + // Catch errors + window.onerror = function(message, file, line){ + + Api.request('logging.log', { + 'data': { + 'type': 'error', + 'message': Browser.name + ' ' + Browser.version + ': \n' + message, + 'page': window.location.href, + 'file': file, + 'line': line + } + }); + + return true; + } + Quality.setup({ 'profiles': {{ fireEvent('profile.all', single = True)|tojson|safe }}, 'qualities': {{ fireEvent('quality.all', single = True)|tojson|safe }}