Don't look for unreleased movies. closes #123

This commit is contained in:
Ruud
2012-04-22 16:56:45 +02:00
parent b944cc610d
commit 60439d45bf
4 changed files with 76 additions and 8 deletions
+20
View File
@@ -2,10 +2,12 @@ from couchpotato import get_session
from couchpotato.core.event import addEvent, fireEventAsync, fireEvent
from couchpotato.core.helpers.encoding import toUnicode, simplifyString, \
tryUrlencode
from couchpotato.core.helpers.variable import mergeDicts
from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import Library, LibraryTitle, File
from string import ascii_letters
import time
import traceback
log = CPLog(__name__)
@@ -17,6 +19,8 @@ class LibraryPlugin(Plugin):
def __init__(self):
addEvent('library.add', self.add)
addEvent('library.update', self.update)
addEvent('library.update_release_date', self.updateReleaseDates)
def add(self, attrs = {}, update_after = True):
@@ -119,6 +123,22 @@ class LibraryPlugin(Plugin):
return library_dict
def updateReleaseDates(self, identifier):
db = get_session()
library = db.query(Library).filter_by(identifier = identifier).first()
if library.info.get('release_date', {}).get('expires', 0) < time.time():
dates = fireEvent('movie.release_date', identifier = identifier, merge = True)
library.info = mergeDicts(library.info, {'release_date': dates})
db.commit()
dates = library.info.get('release_date', {})
db.remove()
return dates
def simplifyTitle(self, title):
title = toUnicode(title)
+4
View File
@@ -34,6 +34,7 @@ class QualityPlugin(Plugin):
addEvent('quality.all', self.all)
addEvent('quality.single', self.single)
addEvent('quality.guess', self.guess)
addEvent('quality.pre_releases', self.preReleases)
addApiView('quality.size.save', self.saveSize)
addApiView('quality.list', self.allView, docs = {
@@ -46,6 +47,9 @@ class QualityPlugin(Plugin):
addEvent('app.initialize', self.fill, priority = 10)
def preReleases(self):
return self.pre_releases
def allView(self):
return jsonified({
+35
View File
@@ -9,6 +9,7 @@ from couchpotato.environment import Env
from sqlalchemy.exc import InterfaceError
import datetime
import re
import time
import traceback
log = CPLog(__name__)
@@ -27,6 +28,8 @@ class Searcher(Plugin):
# Schedule cronjob
fireEvent('schedule.cron', 'searcher.all', self.all_movies, day = self.conf('cron_day'), hour = self.conf('cron_hour'), minute = self.conf('cron_minute'))
addEvent('app.load', self.all_movies)
def all_movies(self):
if self.in_progress:
@@ -64,10 +67,15 @@ class Searcher(Plugin):
def single(self, movie):
pre_releases = fireEvent('quality.pre_releases', single = True)
release_dates = fireEvent('library.update_release_date', identifier = movie['library']['identifier'], merge = True)
available_status = fireEvent('status.get', 'available', single = True)
default_title = movie['library']['titles'][0]['title']
for quality_type in movie['profile']['types']:
if not self.couldBeReleased(quality_type['quality']['identifier'], release_dates, pre_releases):
log.info('To early to search for %s, %s' % (quality_type['quality']['identifier'], default_title))
continue
has_better_quality = 0
@@ -329,3 +337,30 @@ class Searcher(Plugin):
pass
return nfo and getImdb(nfo) == imdb_id
def couldBeReleased(self, wanted_quality, dates, pre_releases):
now = int(time.time())
if not dates or (dates.get('theater', 0) == 0 and dates.get('dvd', 0) == 0):
return True
else:
if wanted_quality in pre_releases:
# Prerelease 1 week before theaters
if dates.get('theater') >= now - 604800 and wanted_quality in pre_releases:
return True
else:
# 6 weeks after theater release
if dates.get('theater') < now - 3628800:
return True
# 6 weeks before dvd release
if dates.get('dvd') > now - 3628800:
return True
# Dvd should be released
if dates.get('dvd') < now:
return True
return False