diff options
| author | Daniel Micay <daniel.micay@grapheneos.org> | 2023-07-15 13:27:52 -0400 |
|---|---|---|
| committer | Daniel Micay <daniel.micay@grapheneos.org> | 2023-07-15 13:27:52 -0400 |
| commit | fe935e5ac78cf4a4c28caf8e0660338002ff5fef (patch) | |
| tree | cc8ae045ac3c257b96e95e6ed358304c01b98e93 /generate-feed | |
| parent | ca66d0a3c42b0d7894ac73de79f36e6c50044e64 (diff) | |
drop file extension from generate-feed.py
Diffstat (limited to 'generate-feed')
| -rwxr-xr-x | generate-feed | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/generate-feed b/generate-feed new file mode 100755 index 00000000..4641bb9b --- /dev/null +++ b/generate-feed @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +from datetime import datetime + +import lxml.html +from lxml import etree + +document = lxml.html.parse("static-tmp/releases.html").getroot() +releases = document.body.cssselect("#changelog article") + +updated = None +entries = [] + +for release in releases: + title = release.attrib["id"] + try: + time = datetime.strptime(title, "%Y%m%d%H").isoformat() + "Z" + except ValueError: + time = datetime.strptime(title, "%Y.%m.%d.%H").isoformat() + "Z" + if updated is None: + updated = time + content = [etree.tostring(e).decode() for e in release.getchildren()[1:]] + entries.append(f""" + <entry> + <id>https://grapheneos.org/releases#{title}</id> + <link href="https://grapheneos.org/releases#{title}"/> + <title>{title}</title> + <updated>{time}</updated> + <published>{time}</published> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + {"".join(content)} + </div> + </content> + </entry>""") + +feed = f"""<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom"> + <id>https://grapheneos.org/releases#changelog</id> + <link href="https://grapheneos.org/releases#changelog"/> + <link rel="self" href="https://grapheneos.org/releases.atom"/> + <link rel="license" href="https://grapheneos.org/LICENSE.txt"/> + <icon>https://grapheneos.org/favicon.ico</icon> + <title>GrapheneOS changelog</title> + <updated>{updated}</updated> + <author> + <name>GrapheneOS</name> + <email>contact@grapheneos.org</email> + <uri>https://grapheneos.org/</uri> + </author>{"".join(entries)} +</feed> +""" + +with open("static-tmp/releases.atom", "w") as f: + f.write(feed) |
