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: # 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_export_tvshow_nfo_job(self, videoid, metadata): # Create tvshow.nfo file # 'get_metadata' return metadata as tuple that can have more items according to type requested, e.g. # for episode metadata: (episode_meta, season_meta, tvshow_meta) # for tvshow/season metadata: (tvshow_meta,) # We need to get the tvshow metadata for each case, then we try to find it on each tuple item key_index = -1 for i, item in enumerate(metadata): if item and item.get('type', None) == 'show': key_index = i if key_index == -1: return None return 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]))
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