def update_cache(): # First, make sure that the base XML file is here if not os.path.isfile(Settings.local_base_xml_filename()): print "Looks like we need to fetch the XML file" fetch_xml() # Next, try to get any missing episodes for number in Settings.get_missing_episodes(): if Settings.have_podcast(number): print "Looks like we already had podcast #{0}".format(number) Settings.remove_missing_episode(number) else: print "Trying to fetch missing episode #{0}".format(number) if fetch_pair(number): print " Got it!" Settings.remove_missing_episode(number) else: print " Failed again" # Now, try getting episodes beyond what we already have number = Settings.get_highest_episode() + 1 missing = [] while len(missing) < Settings.MAX_CONSECUTIVE_404S: if Settings.have_podcast(number): print "Looks like we already had podcast #{0}".format(number) Settings.set_highest_episode(number) else: print "Checking to see if episode {0} is there".format(number) if fetch_pair(number): print " Got it!" Settings.set_highest_episode(number) # Did we miss some before this? If so, mark them as missed if len(missing) > 0: for num in missing: Settings.add_missing_episode(num) else: print " Not there." missing.append(number) # Otherwise, try for the next episode number += 1 print "Looks like {0} is the highest episode number, so far.".format(Settings.get_highest_episode())