from random import randint import datetime #might as well use the datetime we made in main for consistency from main import DATETIME_STR # updates the guid given in two places with the RSS file, essential for letting readers know # a new picture has been published # refrence: https://cyber.harvard.edu/rss/rss.html#ltguidgtSubelementOfLtitemgt # also updates pubDate and lastBuildDate # finay, updates the image name as well def update_rss_feed(rss_file_name): rss_file = "" with open(rss_file_name, "r") as f: rss_file = f.read() element_list = rss_file.split('\n') items = [] for el in element_list: if "link" in el: items.append(el) if "guid" in el: items.append(el) if "enclosure" in el: items.append(el) if "" in el: items.append(el) if "" in el: items.append(el) guid_items = [] for el in items: if "https://onecatper.day#" in el: guid_items.append(el) hash_located_at = [] for el in guid_items: hash_located_at.append(el.index('#')) CLOSING_TAG_LENGTH = 7 as_char_list = list(items[2]) for i in range(hash_located_at[0] + 1, len(as_char_list) - CLOSING_TAG_LENGTH): as_char_list[i] = str(randint(0, 9)) new_guid_link_one = "".join(as_char_list) as_char_list = list(items[4]) for i in range(hash_located_at[1] + 1, len(as_char_list) - CLOSING_TAG_LENGTH): as_char_list[i] = str(randint(0, 9)) new_guid_link_two = "".join(as_char_list) split_file = rss_file.split("\n") old_guid_links = [] for element in split_file: if "https://onecatper.day#" in element: old_guid_links.append(element) # preppring strings for replacement of the old strings # cat image stored in img/ old_img_link = items[-1].split(" ") old_cat_image = old_img_link[-1].split("\"") old_cat_image_url = old_cat_image[1] new_cat_image_url = f"https://onecatper.day/img/cat{DATETIME_STR}.jpg" # storess dates and times in the rss.xml file, needs to be updated for feed to update old_last_build_date = items[1] old_pub_date = items[3] # date and time need to be a specific format # don't want to use constant for this, it needs to be formated rss_date = datetime.datetime.strftime(datetime.datetime.now(), "%a, %d %b %Y %H:%M:%S -0500") # create new date/time links for feed new_last_build_date = f"\t\t{rss_date}" new_pub_date = f"\t\t\t{rss_date}" # replace what is necessary to make the feed update rss_file = rss_file.replace(old_guid_links[0], new_guid_link_one) rss_file = rss_file.replace(old_guid_links[1], new_guid_link_two) rss_file = rss_file.replace(old_cat_image_url, new_cat_image_url) rss_file = rss_file.replace(old_last_build_date, new_last_build_date) rss_file = rss_file.replace(old_pub_date, new_pub_date) # write the changes to disk with open(rss_file_name, "w") as f: f.write(rss_file) update_rss_feed("rss.xml")