Episode searching
This commit is contained in:
@@ -173,6 +173,7 @@ class ShowBase(MediaBase):
|
|||||||
for episode_nr in episodes:
|
for episode_nr in episodes:
|
||||||
|
|
||||||
episode_info = episodes[episode_nr]
|
episode_info = episodes[episode_nr]
|
||||||
|
episode_info['season_number'] = season_nr
|
||||||
fireEvent('show.episode.add', season.get('_id'), episode_info, single = True)
|
fireEvent('show.episode.add', season.get('_id'), episode_info, single = True)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ class Episode(MediaBase):
|
|||||||
return titles
|
return titles
|
||||||
|
|
||||||
|
|
||||||
def identifier(self, library):
|
def identifier(self, media):
|
||||||
if library.get('type') != 'episode':
|
if media.get('type') != 'episode':
|
||||||
return
|
return
|
||||||
|
|
||||||
identifier = {
|
identifier = {
|
||||||
@@ -127,16 +127,16 @@ class Episode(MediaBase):
|
|||||||
'episode': None
|
'episode': None
|
||||||
}
|
}
|
||||||
|
|
||||||
scene_map = library['info'].get('map_episode', {}).get('scene')
|
scene_map = media['info'].get('map_episode', {}).get('scene')
|
||||||
|
|
||||||
if scene_map:
|
if scene_map:
|
||||||
# Use scene mappings if they are available
|
# Use scene mappings if they are available
|
||||||
identifier['season'] = scene_map.get('season')
|
identifier['season'] = scene_map.get('season_nr')
|
||||||
identifier['episode'] = scene_map.get('episode')
|
identifier['episode'] = scene_map.get('episode_nr')
|
||||||
else:
|
else:
|
||||||
# Fallback to normal season/episode numbers
|
# Fallback to normal season/episode numbers
|
||||||
identifier['season'] = library.get('season_number')
|
identifier['season'] = media['info'].get('season_number')
|
||||||
identifier['episode'] = library.get('episode_number')
|
identifier['episode'] = media['info'].get('number')
|
||||||
|
|
||||||
|
|
||||||
# Cast identifiers to integers
|
# Cast identifiers to integers
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class Season(SeasonProvider, Base):
|
|||||||
class Episode(EpisodeProvider, Base):
|
class Episode(EpisodeProvider, Base):
|
||||||
|
|
||||||
def buildUrl(self, media, api_key):
|
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)
|
identifier = fireEvent('media.identifier', media, single = True)
|
||||||
|
|
||||||
query = tryUrlencode({
|
query = tryUrlencode({
|
||||||
@@ -46,4 +46,5 @@ class Episode(EpisodeProvider, Base):
|
|||||||
'apikey': api_key,
|
'apikey': api_key,
|
||||||
'extended': 1
|
'extended': 1
|
||||||
})
|
})
|
||||||
|
|
||||||
return query
|
return query
|
||||||
|
|||||||
@@ -28,18 +28,9 @@ class ShowSearcher(SearcherBase, ShowTypeBase):
|
|||||||
addEvent('episode.searcher.single', self.singleEpisode)
|
addEvent('episode.searcher.single', self.singleEpisode)
|
||||||
|
|
||||||
addEvent('searcher.correct_release', self.correctRelease)
|
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):
|
def single(self, media, search_protocols = None, manual = False):
|
||||||
|
|
||||||
@@ -67,6 +58,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase):
|
|||||||
|
|
||||||
seasons = media.get('seasons', {})
|
seasons = media.get('seasons', {})
|
||||||
for sx in 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)
|
season = seasons.get(sx)
|
||||||
|
|
||||||
# Check if full season can be downloaded TODO: add
|
# 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)
|
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)
|
||||||
fireEvent('notify.frontend', type = 'show.searcher.ended.%s' % media['id'], data = True)
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def singleSeason(self, media, show, profile):
|
def singleSeason(self, media, show, profile):
|
||||||
|
|
||||||
@@ -126,6 +122,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase):
|
|||||||
show_title = getTitle(show)
|
show_title = getTitle(show)
|
||||||
episode_identifier = '%s S%02d%s' % (show_title, season['info'].get('number', 0), "E%02d" % media['info'].get('number'))
|
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
|
index = 0
|
||||||
for q_identifier in profile.get('qualities'):
|
for q_identifier in profile.get('qualities'):
|
||||||
quality_custom = {
|
quality_custom = {
|
||||||
@@ -223,3 +223,10 @@ class ShowSearcher(SearcherBase, ShowTypeBase):
|
|||||||
|
|
||||||
def searchAll(self):
|
def searchAll(self):
|
||||||
pass
|
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