From 5c62144403a9598d271b7b191dc4936a7dd9cc69 Mon Sep 17 00:00:00 2001 From: Dean Gardiner Date: Thu, 7 Aug 2014 17:14:58 +1200 Subject: [PATCH] [TV] Removed old "quality_order" in searcher --- couchpotato/core/media/show/searcher/episode.py | 14 ++++++++------ couchpotato/core/media/show/searcher/season.py | 20 +++++++++++--------- couchpotato/core/media/show/searcher/show.py | 3 +-- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/couchpotato/core/media/show/searcher/episode.py b/couchpotato/core/media/show/searcher/episode.py index ea3a9db..0516475 100755 --- a/couchpotato/core/media/show/searcher/episode.py +++ b/couchpotato/core/media/show/searcher/episode.py @@ -47,7 +47,7 @@ class EpisodeSearcher(SearcherBase, ShowTypeBase): 'result': fireEvent('%s.searcher.single' % self.getType(), media, single = True) } - def single(self, media, profile = None, quality_order = None, search_protocols = None, manual = False): + def single(self, media, profile = None, search_protocols = None, manual = False): db = get_db() related = fireEvent('library.related', media, single = True) @@ -63,9 +63,6 @@ class EpisodeSearcher(SearcherBase, ShowTypeBase): if not profile and related['show']['profile_id']: profile = db.get('id', related['show']['profile_id']) - if not quality_order: - quality_order = fireEvent('quality.order', single = True) - # TODO: check episode status # TODO: check air date #if not self.conf('always_search') and not self.couldBeReleased(quality_type['quality']['identifier'] in pre_releases, release_dates, movie['library']['year']): @@ -93,8 +90,13 @@ class EpisodeSearcher(SearcherBase, ShowTypeBase): # See if better quality is available for release in releases: - if quality_order.index(release['quality']) <= quality_order.index(q_identifier) and release['status'] not in ['available', 'ignored', 'failed']: - has_better_quality += 1 + if release['status'] not in ['available', 'ignored', 'failed']: + is_higher = fireEvent('quality.ishigher', \ + {'identifier': q_identifier, 'is_3d': quality_custom.get('3d', 0)}, \ + {'identifier': release['quality'], 'is_3d': release.get('is_3d', 0)}, \ + profile, single = True) + if is_higher != 'higher': + has_better_quality += 1 # Don't search for quality lower then already available. if has_better_quality is 0: diff --git a/couchpotato/core/media/show/searcher/season.py b/couchpotato/core/media/show/searcher/season.py index c51d584..1d382dc 100755 --- a/couchpotato/core/media/show/searcher/season.py +++ b/couchpotato/core/media/show/searcher/season.py @@ -37,7 +37,7 @@ class SeasonSearcher(SearcherBase, ShowTypeBase): def searchAll(self, manual = False): pass - def single(self, media, profile = None, quality_order = None, search_protocols = None, manual = False): + def single(self, media, profile = None, search_protocols = None, manual = False): db = get_db() related = fireEvent('library.related', media, single = True) @@ -53,9 +53,6 @@ class SeasonSearcher(SearcherBase, ShowTypeBase): if not profile and related['show']['profile_id']: profile = db.get('id', related['show']['profile_id']) - if not quality_order: - quality_order = fireEvent('quality.order', single = True) - # Find 'active' episodes episodes = related['episodes'] episodes_active = [] @@ -68,7 +65,7 @@ class SeasonSearcher(SearcherBase, ShowTypeBase): if len(episodes_active) == len(episodes): # All episodes are 'active', try and search for full season - if self.search(media, profile, quality_order, search_protocols): + if self.search(media, profile, search_protocols): # Success, end season search return True else: @@ -76,14 +73,14 @@ class SeasonSearcher(SearcherBase, ShowTypeBase): # Search for each episode individually for episode in episodes_active: - fireEvent('show.episode.searcher.single', episode, profile, quality_order, search_protocols, manual) + fireEvent('show.episode.searcher.single', episode, profile, search_protocols, manual) # TODO (testing) only grab one episode return True return True - def search(self, media, profile, quality_order, search_protocols): + def search(self, media, profile, search_protocols): # TODO: check episode status # TODO: check air date #if not self.conf('always_search') and not self.couldBeReleased(quality_type['quality']['identifier'] in pre_releases, release_dates, movie['library']['year']): @@ -111,8 +108,13 @@ class SeasonSearcher(SearcherBase, ShowTypeBase): # See if better quality is available for release in releases: - if quality_order.index(release['quality']) <= quality_order.index(q_identifier) and release['status'] not in ['available', 'ignored', 'failed']: - has_better_quality += 1 + if release['status'] not in ['available', 'ignored', 'failed']: + is_higher = fireEvent('quality.ishigher', \ + {'identifier': q_identifier, 'is_3d': quality_custom.get('3d', 0)}, \ + {'identifier': release['quality'], 'is_3d': release.get('is_3d', 0)}, \ + profile, single = True) + if is_higher != 'higher': + has_better_quality += 1 # Don't search for quality lower then already available. if has_better_quality is 0: diff --git a/couchpotato/core/media/show/searcher/show.py b/couchpotato/core/media/show/searcher/show.py index b7619cc..de2f436 100755 --- a/couchpotato/core/media/show/searcher/show.py +++ b/couchpotato/core/media/show/searcher/show.py @@ -59,7 +59,6 @@ class ShowSearcher(SearcherBase, ShowTypeBase): db = get_db() profile = db.get('id', media['profile_id']) - quality_order = fireEvent('quality.order', single = True) for season in show_tree.get('seasons', []): if not season.get('info'): @@ -71,7 +70,7 @@ class ShowSearcher(SearcherBase, ShowTypeBase): continue # Check if full season can be downloaded - fireEvent('show.season.searcher.single', season, profile, quality_order, search_protocols, manual) + fireEvent('show.season.searcher.single', season, profile, search_protocols, manual) # TODO (testing) only snatch one season return