all repos — eyes-like-fire @ 1e6809d40caa9d2b139433d83b7082560b95a7eb

Source code for the main eyes-like-fire website

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()