diff --git a/couchpotato/core/downloaders/sabnzbd/main.py b/couchpotato/core/downloaders/sabnzbd/main.py index 5b2de6b0..8b7383ba 100644 --- a/couchpotato/core/downloaders/sabnzbd/main.py +++ b/couchpotato/core/downloaders/sabnzbd/main.py @@ -37,11 +37,11 @@ class Sabnzbd(Downloader): else: params['name'] = data.get('url') - url = cleanHost(self.conf('host')) + "api?" + tryUrlencode(params) + url = cleanHost(self.conf('host')) + 'api?' + tryUrlencode(params) try: if params.get('mode') is 'addfile': - sab = self.urlopen(url, timeout = 60, params = {"nzbfile": (nzb_filename, filedata)}, multipart = True, show_error = False) + sab = self.urlopen(url, timeout = 60, params = {'nzbfile': (nzb_filename, filedata)}, multipart = True, show_error = False) else: sab = self.urlopen(url, timeout = 60, show_error = False) except URLError: @@ -53,13 +53,12 @@ class Sabnzbd(Downloader): result = sab.strip() if not result: - log.error("SABnzbd didn't return anything.") + log.error('SABnzbd didn\'t return anything.') return False - log.debug("Result text from SAB: " + result[:40]) - print result - if result == "ok": - log.info("NZB sent to SAB successfully.") + log.debug('Result text from SAB: %s', result[:40]) + if result[:2] == 'ok': + log.info('NZB sent to SAB successfully.') return True else: log.error(result[:40]) @@ -143,14 +142,19 @@ class Sabnzbd(Downloader): def call(self, params, use_json = True): - url = cleanHost(self.conf('host')) + "api?" + tryUrlencode(mergeDicts(params, { + url = cleanHost(self.conf('host')) + 'api?' + tryUrlencode(mergeDicts(params, { 'apikey': self.conf('api_key'), 'output': 'json' })) data = self.urlopen(url, timeout = 60, show_error = False) if use_json: - return json.loads(data)[params['mode']] + d = json.loads(data) + if d.get('error'): + log.error('Error getting data from SABNZBd: %s', d.get('error')) + return {} + + return d[params['mode']] else: return data diff --git a/couchpotato/core/notifications/base.py b/couchpotato/core/notifications/base.py index 6efb716e..7e98fa51 100644 --- a/couchpotato/core/notifications/base.py +++ b/couchpotato/core/notifications/base.py @@ -30,10 +30,10 @@ class Notification(Plugin): addEvent(listener, self.createNotifyHandler(listener)) def createNotifyHandler(self, listener): - def notify(message = None, group = {}, data = {}): + def notify(message = None, group = {}, data = None): if not self.conf('on_snatch', default = True) and listener == 'movie.snatched': return - return self.notify(message = message, data = group if group != {} else data, listener = listener) + return self.notify(message = message, data = data if data else group, listener = listener) return notify diff --git a/couchpotato/core/plugins/searcher/main.py b/couchpotato/core/plugins/searcher/main.py index f0bccc71..edad31f7 100644 --- a/couchpotato/core/plugins/searcher/main.py +++ b/couchpotato/core/plugins/searcher/main.py @@ -180,10 +180,8 @@ class Searcher(Plugin): status_id = available_status.get('id') ) db.add(rls) - db.commit() else: [db.delete(info) for info in rls.info] - db.commit() for info in nzb: try: @@ -195,12 +193,13 @@ class Searcher(Plugin): value = toUnicode(nzb[info]) ) rls.info.append(rls_info) - db.commit() except InterfaceError: log.debug('Couldn\'t add %s to ReleaseInfo: %s', (info, traceback.format_exc())) nzb['status_id'] = rls.status_id + db.commit() + for nzb in sorted_results: if nzb['status_id'] == ignored_status.get('id'): @@ -245,38 +244,42 @@ class Searcher(Plugin): if successful: - # Mark release as snatched - db = get_session() - rls = db.query(Release).filter_by(identifier = md5(data['url'])).first() - rls.status_id = snatched_status.get('id') - db.commit() + try: + # Mark release as snatched + db = get_session() + rls = db.query(Release).filter_by(identifier = md5(data['url'])).first() + if rls: + rls.status_id = snatched_status.get('id') + db.commit() - log_movie = '%s (%s) in %s' % (getTitle(movie['library']), movie['library']['year'], rls.quality.label) - snatch_message = 'Snatched "%s": %s' % (data.get('name'), log_movie) - log.info(snatch_message) - fireEvent('movie.snatched', message = snatch_message, data = rls.to_dict()) + log_movie = '%s (%s) in %s' % (getTitle(movie['library']), movie['library']['year'], rls.quality.label) + snatch_message = 'Snatched "%s": %s' % (data.get('name'), log_movie) + log.info(snatch_message) + fireEvent('movie.snatched', message = snatch_message, data = rls.to_dict()) + # If renamer isn't used, mark movie done + if not Env.setting('enabled', 'renamer'): + active_status = fireEvent('status.get', 'active', single = True) + done_status = fireEvent('status.get', 'done', single = True) + try: + if movie['status_id'] == active_status.get('id'): + for profile_type in movie['profile']['types']: + if rls and profile_type['quality_id'] == rls.quality.id and profile_type['finish']: + log.info('Renamer disabled, marking movie as finished: %s', log_movie) - # If renamer isn't used, mark movie done - if not Env.setting('enabled', 'renamer'): - active_status = fireEvent('status.get', 'active', single = True) - done_status = fireEvent('status.get', 'done', single = True) - try: - if movie['status_id'] == active_status.get('id'): - for profile_type in movie['profile']['types']: - if profile_type['quality_id'] == rls.quality.id and profile_type['finish']: - log.info('Renamer disabled, marking movie as finished: %s', log_movie) + # Mark release done + rls.status_id = done_status.get('id') + db.commit() - # Mark release done - rls.status_id = done_status.get('id') - db.commit() + # Mark movie done + mvie = db.query(Movie).filter_by(id = movie['id']).first() + mvie.status_id = done_status.get('id') + db.commit() + except: + log.error('Failed marking movie finished, renamer disabled: %s', traceback.format_exc()) - # Mark movie done - mvie = db.query(Movie).filter_by(id = movie['id']).first() - mvie.status_id = done_status.get('id') - db.commit() - except Exception, e: - log.error('Failed marking movie finished: %s %s', (e, traceback.format_exc())) + except: + log.error('Failed marking movie finished: %s', traceback.format_exc()) return True