Downloading of single releases and more
This commit is contained in:
@@ -7,6 +7,7 @@ from couchpotato.core.plugins.base import Plugin
|
||||
from couchpotato.core.settings.model import Movie, Release, ReleaseInfo
|
||||
from couchpotato.environment import Env
|
||||
import re
|
||||
import traceback
|
||||
|
||||
log = CPLog(__name__)
|
||||
|
||||
@@ -17,6 +18,7 @@ class Searcher(Plugin):
|
||||
addEvent('searcher.all', self.all)
|
||||
addEvent('searcher.single', self.single)
|
||||
addEvent('searcher.correct_movie', self.correctMovie)
|
||||
addEvent('searcher.download', self.download)
|
||||
|
||||
# Schedule cronjob
|
||||
fireEvent('schedule.cron', 'searcher.all', self.all, day = self.conf('cron_day'), hour = self.conf('cron_hour'), minute = self.conf('cron_minute'))
|
||||
@@ -34,7 +36,7 @@ class Searcher(Plugin):
|
||||
|
||||
for movie in movies:
|
||||
|
||||
self.single(movie.to_dict(deep = {
|
||||
self.single(movie.to_dict({
|
||||
'profile': {'types': {'quality': {}}},
|
||||
'releases': {'status': {}, 'quality': {}},
|
||||
'library': {'titles': {}, 'files':{}},
|
||||
@@ -47,11 +49,8 @@ class Searcher(Plugin):
|
||||
|
||||
def single(self, movie):
|
||||
|
||||
downloaded_status = fireEvent('status.get', 'downloaded', single = True)
|
||||
available_status = fireEvent('status.get', 'available', single = True)
|
||||
snatched_status = fireEvent('status.get', 'snatched', single = True)
|
||||
|
||||
successful = False
|
||||
for type in movie['profile']['types']:
|
||||
|
||||
has_better_quality = 0
|
||||
@@ -85,37 +84,19 @@ class Searcher(Plugin):
|
||||
db.commit()
|
||||
|
||||
for info in nzb:
|
||||
rls_info = ReleaseInfo(
|
||||
identifier = info,
|
||||
value = nzb[info]
|
||||
)
|
||||
rls.info.append(rls_info)
|
||||
try:
|
||||
rls_info = ReleaseInfo(
|
||||
identifier = info,
|
||||
value = nzb[info]
|
||||
)
|
||||
rls.info.append(rls_info)
|
||||
except Exception:
|
||||
log.debug('Couldn\'t add %s to ReleaseInfo: %s' % (info, traceback.format_exc()))
|
||||
db.commit()
|
||||
|
||||
|
||||
for nzb in sorted_results:
|
||||
successful = fireEvent('download', data = nzb, movie = movie, single = True)
|
||||
|
||||
if successful:
|
||||
|
||||
# Mark release as snatched
|
||||
db = get_session()
|
||||
rls = db.query(Release).filter_by(identifier = md5(nzb['url'])).first()
|
||||
rls.status_id = snatched_status.get('id')
|
||||
db.commit()
|
||||
|
||||
# Mark movie snatched if quality is finish-checked
|
||||
if type['finish']:
|
||||
mvie = db.query(Movie).filter_by(id = movie['id']).first()
|
||||
mvie.status_id = snatched_status.get('id')
|
||||
db.commit()
|
||||
|
||||
log.info('Downloading of %s successful.' % nzb.get('name'))
|
||||
fireEvent('movie.snatched', message = 'Downloading of %s successful.' % nzb.get('name'), data = rls.to_dict())
|
||||
|
||||
return True
|
||||
|
||||
return False
|
||||
return self.download(data = nzb, movie = movie)
|
||||
else:
|
||||
log.info('Better quality (%s) already available or snatched for %s' % (type['quality']['label'], default_title))
|
||||
break
|
||||
@@ -126,6 +107,26 @@ class Searcher(Plugin):
|
||||
|
||||
return False
|
||||
|
||||
def download(self, data, movie):
|
||||
|
||||
snatched_status = fireEvent('status.get', 'snatched', single = True)
|
||||
|
||||
successful = fireEvent('download', data = data, movie = movie, single = True)
|
||||
|
||||
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()
|
||||
|
||||
log.info('Downloading of %s successful.' % data.get('name'))
|
||||
fireEvent('movie.snatched', message = 'Downloading of %s successful.' % data.get('name'), data = rls.to_dict())
|
||||
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def correctMovie(self, nzb = {}, movie = {}, quality = {}, **kwargs):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user