Episode searching
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user