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:
@@ -1,8 +1,9 @@
|
|||||||
from couchpotato import Env, get_session
|
from couchpotato import Env, get_session
|
||||||
from couchpotato.core.event import addEvent, fireEvent
|
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.logger import CPLog
|
||||||
from couchpotato.core.media._base.searcher.main import SearchSetupError
|
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.plugins.base import Plugin
|
||||||
from couchpotato.core.settings.model import Media
|
from couchpotato.core.settings.model import Media
|
||||||
from qcond import QueryCondenser
|
from qcond import QueryCondenser
|
||||||
@@ -52,8 +53,15 @@ class ShowSearcher(Plugin):
|
|||||||
def single(self, media, search_protocols = None, manual = False):
|
def single(self, media, search_protocols = None, manual = False):
|
||||||
show, season, episode = self.getLibraries(media['library'])
|
show, season, episode = self.getLibraries(media['library'])
|
||||||
|
|
||||||
|
db = get_session()
|
||||||
|
|
||||||
if media['type'] == 'show':
|
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
|
return
|
||||||
|
|
||||||
# Find out search type
|
# 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.')
|
log.debug('Episode doesn\'t have a profile or already done, assuming in manage tab.')
|
||||||
return
|
return
|
||||||
|
|
||||||
db = get_session()
|
|
||||||
|
|
||||||
#pre_releases = fireEvent('quality.pre_releases', single = True)
|
#pre_releases = fireEvent('quality.pre_releases', single = True)
|
||||||
|
|
||||||
found_releases = []
|
found_releases = []
|
||||||
@@ -143,6 +149,16 @@ class ShowSearcher(Plugin):
|
|||||||
|
|
||||||
if len(too_early_to_search) > 0:
|
if len(too_early_to_search) > 0:
|
||||||
log.info2('Too early to search for %s, %s', (too_early_to_search, default_title))
|
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)
|
fireEvent('notify.frontend', type = 'show.searcher.ended.%s' % media['id'], data = True)
|
||||||
|
|
||||||
@@ -249,17 +265,18 @@ class ShowSearcher(Plugin):
|
|||||||
|
|
||||||
libraries = library['related_libraries']
|
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', [])
|
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', [])
|
season = libraries.get('season', [])
|
||||||
if len(season) <= 1:
|
if library['type'] in ['season', 'episode']:
|
||||||
season = season[0] if len(season) else None
|
season = season[0] if len(season) else None
|
||||||
|
|
||||||
|
# Episode collapses if the subject is a episode
|
||||||
episode = libraries.get('episode', [])
|
episode = libraries.get('episode', [])
|
||||||
if len(episode) <= 1:
|
if library['type'] == 'episode':
|
||||||
episode = episode[0] if len(episode) else None
|
episode = episode[0] if len(episode) else None
|
||||||
|
|
||||||
return show, season, episode
|
return show, season, episode
|
||||||
|
|||||||
Reference in New Issue
Block a user