feedgen.py (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import datetime
import re
import xml.etree.ElementTree as et
def main():
TIMEFMT: str = "%Y-%m-%dT%H:%M:%SZ"
out_xml = et.Element("feed", {"xml:lang": "en"})
title = et.SubElement(out_xml, "title")
title.text = "Juniper Beatitudes' Blog"
out_xml.append(
et.Element(
"link",
{"href": "https://eyes-like-fire.org/blog/index.html", "rel": "alternate"},
)
)
id_elem = et.SubElement(out_xml, "id")
id_elem.text = "https://eyes-like-fire.org/blog/index.html"
updated = et.SubElement(out_xml, "updated")
updated.text = datetime.datetime.now(tz=datetime.timezone.utc).strftime(TIMEFMT)
with open("src/blog.md", "r") as blogfile:
REGEX: re.Pattern = re.compile(
r"^## ([\w\s]+) \((\d\d\d\d-\d\d-\d\d)\) \{#(.+)\}\n"
)
n = 1
for line in blogfile:
if match_obj := re.match(REGEX, line):
entry = et.SubElement(out_xml, "entry")
entry_title = et.SubElement(entry, "title")
entry_title.text = match_obj.group(1)
entry.append(
et.Element(
"link",
{
"href": f"https://eyes-like-fire.org/blog/{n}-{match_obj.group(3)}.html",
"rel": "alternate",
},
)
)
entry_id = et.SubElement(entry, "id")
entry_id.text = (
f"https://eyes-like-fire.org/blog/{n}-{match_obj.group(3)}.html"
)
entry_updated = et.SubElement(entry, "updated")
entry_updated.text = f"{match_obj.group(2)}T00:00:00Z"
print(et.tostring(out_xml, encoding="utf-8").decode("utf-8"))
if __name__ == "__main__":
main()
|