Browse Source

Episode searching

pull/3111/head
Ruud 11 years ago
parent
commit
af64961502
  1. 1
      couchpotato/core/media/show/_base/main.py
  2. 14
      couchpotato/core/media/show/episode.py
  3. 3
      couchpotato/core/media/show/providers/nzb/newznab.py
  4. 35
      couchpotato/core/media/show/searcher.py

1
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)

14
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

3
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

35
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)

Loading…
Cancel
Save