def manually_correct_theme(name, url, type, rk, just_theme, remove_old_theme): # pragma: no cover """Set the correct fingerprint of the show in the hashes.db and process the eps of that show in the db against the new theme fingerprint. Args: name (str): name of the show url (str): the youtube/tvtunes url or filepath to the correct theme. type (str): What source to use for themes. rk (str): ratingkey of that show. Pass auto if your lazy. just_theme (bool): just add the theme song not reprocess stuff. remove_old_theme (bool): Removes all the old themes of this show Returns: None """ global HT HT = get_hashtable() # Assist for the lazy bastards.. if rk == 'auto': items = PMS.search(name) items = [i for i in items if i and i.TYPE == 'show'] items = choose('Select correct show', items, lambda x: '%s %s' % (x.title, x.TYPE)) if items: rk = items[0].ratingKey if remove_old_theme: themes = HT.get_theme(items[0]) for th in themes: LOG.debug('Removing %s from the hashtable', th) HT.remove(th) # Download the themes depending on the manual option or config file. download_theme(items[0], HT, theme_source=type, url=url) to_pp = [] if just_theme: return if rk: with session_scope() as se: # Find all episodes of this show. item = se.query(Processed).filter_by(grandparentRatingKey=rk) for i in item: to_pp.append(PMS.fetchItem(i.ratingKey)) # Prob should have used edit, but we do this so we can use process_to_db. se.delete(i) for media in to_pp: process_to_db(media)
def set_manual_theme_time(showname, season, episode, type, start, end): # pragma: no cover """Set a manual start and end time for a theme. Args: showname(str): name of the show you want to find season(int): season number fx 1 episode(int): episode number 1 type(str): theme, credit # Still TODO Stuff for credits start(int, str): This can be in seconds or MM:SS format start(int, str): This can be in seconds or MM:SS format Returns: None """ LOG.debug('Trying to set manual time') result = PMS.search(showname) if result: items = choose('Select show', result, 'title') show = items[0] ep = show.episode(season=season, episode=episode) if ep: with session_scope() as se: item = se.query(Processed).filter_by( ratingKey=ep.ratingKey).one() start = to_sec(start) end = to_sec(end) if type == 'ffmpeg': item.correct_ffmpeg = end elif type == 'theme': if start: item.correct_time_start = start if end: item.correct_time_end = end elif type == 'credits': if start: item.correct_credits_start = start if end: item.correct_credits_end = end LOG.debug('Set correct_time %s for %s to start %s end %s', type, ep._prettyfilename(), start, end)
def test_a_movie(name): # pragma: no cover result = PMS.search(name) if result: process_to_db(result[0])