def _find_next_episode(videoid, metadata): try: # Find next episode in current season episode = common.find(metadata[0]['seq'] + 1, 'seq', metadata[1]['episodes']) return common.VideoId(tvshowid=videoid.tvshowid, seasonid=videoid.seasonid, episodeid=episode['id']) except (IndexError, KeyError): # Find first episode of next season next_season = common.find(metadata[1]['seq'] + 1, 'seq', metadata[2]['seasons']) episode = common.find(1, 'seq', next_season['episodes']) return common.VideoId(tvshowid=videoid.tvshowid, seasonid=next_season['id'], episodeid=episode['id'])
def _create_export_tv_tasks(videoid, metadata, nfo_settings): """Create tasks for a show, season or episode. If videoid represents a show or season, tasks will be generated for all contained seasons and episodes""" if videoid.mediatype == common.VideoId.SHOW: tasks = _compile_export_show_tasks(videoid, metadata[0], nfo_settings) elif videoid.mediatype == common.VideoId.SEASON: tasks = _compile_export_season_tasks( videoid, metadata[0], common.find(int(videoid.seasonid), 'id', metadata[0]['seasons']), nfo_settings) else: tasks = [ _create_export_episode_task(videoid, *metadata, nfo_settings=nfo_settings) ] if nfo_settings and nfo_settings.export_full_tvshow: # Create tvshow.nfo file # In episode metadata, show data is at 3rd position, # while it's at first position in show metadata. # Best is to enumerate values to find the correct key position key_index = -1 for i, item in enumerate(metadata): if item and item.get('type', None) == 'show': key_index = i if key_index > -1: tasks.append( _create_export_item_task( 'tvshow.nfo', FOLDER_TV, videoid, metadata[key_index]['title'], 'tvshow', nfo.create_show_nfo(metadata[key_index]), False)) return tasks
def _create_export_tvshow_jobs(self, videoid, metadata, nfo_settings): """ Create jobs data to export a: tv show, season or episode. The data for the jobs will be generated by extrapolating every single episode. """ if videoid.mediatype == common.VideoId.SHOW: tasks = self._get_export_tvshow_jobs(videoid, metadata[0], nfo_settings) elif videoid.mediatype == common.VideoId.SEASON: tasks = self._get_export_season_jobs( videoid, metadata[0], common.find(int(videoid.seasonid), 'id', metadata[0]['seasons']), nfo_settings) else: tasks = [ self._create_export_episode_job(videoid, *metadata, nfo_settings=nfo_settings) ] if nfo_settings and nfo_settings.export_full_tvshow: job = self._create_export_tvshow_nfo_job(videoid, metadata) if job: tasks.append(job) return tasks
def _create_tv_tasks(videoid, metadata): """Create tasks for a show, season or episode. If videoid represents a show or season, tasks will be generated for all contained seasons and episodes""" if videoid.mediatype == common.VideoId.SHOW: return _compile_show_tasks(videoid, metadata[0]) elif videoid.mediatype == common.VideoId.SEASON: return _compile_season_tasks( videoid, metadata[0], common.find(int(videoid.seasonid), 'id', metadata[0]['seasons'])) return [_create_episode_task(videoid, *metadata)]
def _create_export_tvshow_jobs(self, videoid, metadata, nfo_settings): """ Create jobs data to export a: tv show, season or episode. The data for the jobs will be generated by extrapolating every single episode. """ if videoid.mediatype == common.VideoId.SHOW: tasks = self._get_export_tvshow_jobs(videoid, metadata[0], nfo_settings) elif videoid.mediatype == common.VideoId.SEASON: tasks = self._get_export_season_jobs( videoid, metadata[0], common.find(int(videoid.seasonid), 'id', metadata[0]['seasons']), nfo_settings) else: tasks = [ self._create_export_episode_job(videoid, *metadata, nfo_settings=nfo_settings) ] if nfo_settings and nfo_settings.export_full_tvshow: # Create tvshow.nfo file # In episode metadata, the show data is at 3rd position, # In show metadata, the show data is at 1st position. # Best is to enumerate values to find the correct key position key_index = -1 for i, item in enumerate(metadata): if item and item.get('type', None) == 'show': key_index = i if key_index > -1: tasks.append( self._build_export_job_data( False, True, videoid=videoid, title='tvshow.nfo', root_folder_name=FOLDER_NAME_SHOWS, folder_name=metadata[key_index]['title'], filename='tvshow', nfo_data=nfo.create_show_nfo(metadata[key_index]))) return tasks
def _create_tv_tasks(videoid, metadata, nfo_settings): """Create tasks for a show, season or episode. If videoid represents a show or season, tasks will be generated for all contained seasons and episodes""" if videoid.mediatype == common.VideoId.SHOW: tasks = _compile_show_tasks(videoid, metadata[0], nfo_settings) elif videoid.mediatype == common.VideoId.SEASON: tasks = _compile_season_tasks( videoid, metadata[0], common.find(int(videoid.seasonid), 'id', metadata[0]['seasons']), nfo_settings) else: tasks = [ _create_episode_task(videoid, *metadata, nfo_settings=nfo_settings) ] if nfo_settings and nfo_settings.export_full_tvshow: # Create tvshow.nfo file tasks.append( _create_item_task('tvshow.nfo', FOLDER_TV, videoid, metadata[0]['title'], 'tvshow', nfo.create_show_nfo(metadata[0]), False)) return tasks