Reworked some download code. #924

This commit is contained in:
Ruud committed 2012-10-15 23:50:05 +02:00
1 parent 907f821e50
commit 9ebc4dbf38
3 files changed
+48 -41

No files matched your search

+13 -9
View File
@@ -37,11 +37,11 @@ class Sabnzbd(Downloader):
else: else:
params['name'] = data.get('url') params['name'] = data.get('url')
url = cleanHost(self.conf('host')) + "api?" + tryUrlencode(params) url = cleanHost(self.conf('host')) + 'api?' + tryUrlencode(params)
try: try:
if params.get('mode') is 'addfile': 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: else:
sab = self.urlopen(url, timeout = 60, show_error = False) sab = self.urlopen(url, timeout = 60, show_error = False)
except URLError: except URLError:
@@ -53,13 +53,12 @@ class Sabnzbd(Downloader):
result = sab.strip() result = sab.strip()
if not result: if not result:
log.error("SABnzbd didn't return anything.") log.error('SABnzbd didn\'t return anything.')
return False return False
log.debug("Result text from SAB: " + result[:40]) log.debug('Result text from SAB: %s', result[:40])
print result if result[:2] == 'ok':
if result == "ok": log.info('NZB sent to SAB successfully.')
log.info("NZB sent to SAB successfully.")
return True return True
else: else:
log.error(result[:40]) log.error(result[:40])
@@ -143,14 +142,19 @@ class Sabnzbd(Downloader):
def call(self, params, use_json = True): 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'), 'apikey': self.conf('api_key'),
'output': 'json' 'output': 'json'
})) }))
data = self.urlopen(url, timeout = 60, show_error = False) data = self.urlopen(url, timeout = 60, show_error = False)
if use_json: 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: else:
return data return data
+2 -2
View File
@@ -30,10 +30,10 @@ class Notification(Plugin):
addEvent(listener, self.createNotifyHandler(listener)) addEvent(listener, self.createNotifyHandler(listener))
def createNotifyHandler(self, 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': if not self.conf('on_snatch', default = True) and listener == 'movie.snatched':
return 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 return notify
+33 -30
View File
@@ -180,10 +180,8 @@ class Searcher(Plugin):
status_id = available_status.get('id') status_id = available_status.get('id')
) )
db.add(rls) db.add(rls)
db.commit()
else: else:
[db.delete(info) for info in rls.info] [db.delete(info) for info in rls.info]
db.commit()
for info in nzb: for info in nzb:
try: try:
@@ -195,12 +193,13 @@ class Searcher(Plugin):
value = toUnicode(nzb[info]) value = toUnicode(nzb[info])
) )
rls.info.append(rls_info) rls.info.append(rls_info)
db.commit()
except InterfaceError: except InterfaceError:
log.debug('Couldn\'t add %s to ReleaseInfo: %s', (info, traceback.format_exc())) log.debug('Couldn\'t add %s to ReleaseInfo: %s', (info, traceback.format_exc()))
nzb['status_id'] = rls.status_id nzb['status_id'] = rls.status_id
db.commit()
for nzb in sorted_results: for nzb in sorted_results:
if nzb['status_id'] == ignored_status.get('id'): if nzb['status_id'] == ignored_status.get('id'):
@@ -245,38 +244,42 @@ class Searcher(Plugin):
if successful: if successful:
# Mark release as snatched try:
db = get_session() # Mark release as snatched
rls = db.query(Release).filter_by(identifier = md5(data['url'])).first() db = get_session()
rls.status_id = snatched_status.get('id') rls = db.query(Release).filter_by(identifier = md5(data['url'])).first()
db.commit() 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) 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) snatch_message = 'Snatched "%s": %s' % (data.get('name'), log_movie)
log.info(snatch_message) log.info(snatch_message)
fireEvent('movie.snatched', message = snatch_message, data = rls.to_dict()) 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 # Mark release done
if not Env.setting('enabled', 'renamer'): rls.status_id = done_status.get('id')
active_status = fireEvent('status.get', 'active', single = True) db.commit()
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 # Mark movie done
rls.status_id = done_status.get('id') mvie = db.query(Movie).filter_by(id = movie['id']).first()
db.commit() 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 except:
mvie = db.query(Movie).filter_by(id = movie['id']).first() log.error('Failed marking movie finished: %s', traceback.format_exc())
mvie.status_id = done_status.get('id')
db.commit()
except Exception, e:
log.error('Failed marking movie finished: %s %s', (e, traceback.format_exc()))
return True return True