diff --git a/couchpotato/core/media/show/_base/main.py b/couchpotato/core/media/show/_base/main.py index 71efd8d..7d7e637 100644 --- a/couchpotato/core/media/show/_base/main.py +++ b/couchpotato/core/media/show/_base/main.py @@ -173,6 +173,7 @@ class ShowBase(MediaBase): for episode_nr in episodes: episode_info = episodes[episode_nr] + episode_info['season_number'] = season_nr fireEvent('show.episode.add', season.get('_id'), episode_info, single = True) diff --git a/couchpotato/core/media/show/episode.py b/couchpotato/core/media/show/episode.py index ae5fa22..c4a0a1a 100644 --- a/couchpotato/core/media/show/episode.py +++ b/couchpotato/core/media/show/episode.py @@ -118,8 +118,8 @@ class Episode(MediaBase): return titles - def identifier(self, library): - if library.get('type') != 'episode': + def identifier(self, media): + if media.get('type') != 'episode': return identifier = { @@ -127,16 +127,16 @@ class Episode(MediaBase): 'episode': None } - scene_map = library['info'].get('map_episode', {}).get('scene') + scene_map = media['info'].get('map_episode', {}).get('scene') if scene_map: # Use scene mappings if they are available - identifier['season'] = scene_map.get('season') - identifier['episode'] = scene_map.get('episode') + identifier['season'] = scene_map.get('season_nr') + identifier['episode'] = scene_map.get('episode_nr') else: # Fallback to normal season/episode numbers - identifier['season'] = library.get('season_number') - identifier['episode'] = library.get('episode_number') + identifier['season'] = media['info'].get('season_number') + identifier['episode'] = media['info'].get('number') # Cast identifiers to integers diff --git a/couchpotato/core/media/show/providers/nzb/newznab.py b/couchpotato/core/media/show/providers/nzb/newznab.py index 9469551..e376d05 100644 --- a/couchpotato/core/media/show/providers/nzb/newznab.py +++ b/couchpotato/core/media/show/providers/nzb/newznab.py @@ -35,7 +35,7 @@ class Season(SeasonProvider, Base): class Episode(EpisodeProvider, Base): def buildUrl(self, media, api_key): - search_title = fireEvent('media.search_query', media, include_identifier = False, single = True) + search_title = fireEvent('media.search_query', media['show'], include_identifier = False, single = True) identifier = fireEvent('media.identifier', media, single = True) query = tryUrlencode({ @@ -46,4 +46,5 @@ class Episode(EpisodeProvider, Base): 'apikey': api_key, 'extended': 1 }) + return query diff --git a/couchpotato/core/media/show/searcher.py b/couchpotato/core/media/show/searcher.py index 31eec19..255d12d 100644 --- a/couchpotato/core/media/show/searcher.py +++ b/couchpotato/core/media/show/searcher.py @@ -28,18 +28,9 @@ class ShowSearcher(SearcherBase, ShowTypeBase): addEvent('episode.searcher.single', self.singleEpisode) addEvent('searcher.correct_release', self.correctRelease) + addEvent('searcher.get_search_title', self.getSearchTitle) - def test(): - time.sleep(.2) - db = get_db() - medias = db.get_many('media_by_type', 'show', with_doc = True) - for x in medias: - media = x['doc'] - break - self.single(media) - - addEvent('app.load', test) def single(self, media, search_protocols = None, manual = False): @@ -67,6 +58,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase): seasons = media.get('seasons', {}) for sx in seasons: + + # Skip specials for now TODO: set status for specials to skipped by default + if sx == 0: continue + season = seasons.get(sx) # Check if full season can be downloaded TODO: add @@ -80,12 +75,13 @@ class ShowSearcher(SearcherBase, ShowTypeBase): self.singleEpisode(episode, season, media, profile, quality_order, search_protocols) + # TODO + return + # TODO + return - - fireEvent('notify.frontend', type = 'show.searcher.ended.%s' % media['id'], data = True) - - return ret + fireEvent('notify.frontend', type = 'show.searcher.ended.%s' % media['_id'], data = True) def singleSeason(self, media, show, profile): @@ -126,6 +122,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase): show_title = getTitle(show) episode_identifier = '%s S%02d%s' % (show_title, season['info'].get('number', 0), "E%02d" % media['info'].get('number')) + # Add parents + media['show'] = show + media['season'] = season + index = 0 for q_identifier in profile.get('qualities'): quality_custom = { @@ -223,3 +223,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase): def searchAll(self): pass + + def getSearchTitle(self, media): + # TODO: this should be done for season and episode + if media['type'] == 'season': + return getTitle(media) + elif media['type'] == 'episode': + return getTitle(media)