Searching for a show now triggers searching for all the seasons, Season searches that fail to find anything now trigger individual episode searches.

This commit is contained in:
Dean Gardiner
2013-12-07 21:23:10 +13:00
parent 69d58663ef
commit 1e39d643a8
+26 -9
View File
@@ -1,8 +1,9 @@
from couchpotato import Env, get_session
from couchpotato.core.event import addEvent, fireEvent
from couchpotato.core.helpers.variable import getTitle, tryInt, toIterable
from couchpotato.core.helpers.variable import getTitle, toIterable
from couchpotato.core.logger import CPLog
from couchpotato.core.media._base.searcher.main import SearchSetupError
from couchpotato.core.media.show._base import ShowBase
from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import Media
from qcond import QueryCondenser
@@ -52,8 +53,15 @@ class ShowSearcher(Plugin):
def single(self, media, search_protocols = None, manual = False):
show, season, episode = self.getLibraries(media['library'])
db = get_session()
if media['type'] == 'show':
# TODO handle show searches (scan all seasons)
for library in season:
# TODO ideally we shouldn't need to fetch the media for each season library here
m = db.query(Media).filter_by(library_id = library['library_id']).first()
fireEvent('season.searcher.single', m.to_dict(ShowBase.search_dict))
return
# Find out search type
@@ -69,8 +77,6 @@ class ShowSearcher(Plugin):
log.debug('Episode doesn\'t have a profile or already done, assuming in manage tab.')
return
db = get_session()
#pre_releases = fireEvent('quality.pre_releases', single = True)
found_releases = []
@@ -143,6 +149,16 @@ class ShowSearcher(Plugin):
if len(too_early_to_search) > 0:
log.info2('Too early to search for %s, %s', (too_early_to_search, default_title))
elif media['type'] == 'season' and not ret:
# If nothing was found, start searching for episodes individually
log.info('No season pack found, starting individual episode search')
for library in episode:
# TODO ideally we shouldn't need to fetch the media for each episode library here
m = db.query(Media).filter_by(library_id = library['library_id']).first()
fireEvent('episode.searcher.single', m.to_dict(ShowBase.search_dict))
fireEvent('notify.frontend', type = 'show.searcher.ended.%s' % media['id'], data = True)
@@ -249,17 +265,18 @@ class ShowSearcher(Plugin):
libraries = library['related_libraries']
# Get libraries and return lists only if there is multiple items
# Show always collapses as there can never be any multiples
show = libraries.get('show', [])
if len(show) <= 1:
show = show[0] if len(show) else None
show = show[0] if len(show) else None
# Season collapses if the subject is a season or episode
season = libraries.get('season', [])
if len(season) <= 1:
if library['type'] in ['season', 'episode']:
season = season[0] if len(season) else None
# Episode collapses if the subject is a episode
episode = libraries.get('episode', [])
if len(episode) <= 1:
if library['type'] == 'episode':
episode = episode[0] if len(episode) else None
return show, season, episode