The constant can still be shared between the two files as it was originally, it was not shared temporarily for testing purposes
90 lines
3.1 KiB
Python
90 lines
3.1 KiB
Python
from random import randint
|
|
import datetime
|
|
|
|
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
|
|
# finally, 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 "<lastBuildDate>" in el:
|
|
items.append(el)
|
|
if "<pubDate>" 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<lastBuildDate>{rss_date}</lastBuildDate>"
|
|
new_pub_date = f"\t\t\t<pubDate>{rss_date}</pubDate>"
|
|
|
|
# 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")
|