#!/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 h3") updated = None entries = [] for release in releases: title = release.attrib["id"] time = datetime.strptime(title, "%Y.%m.%d.%H").isoformat() + "Z" if updated is None: updated = time content = [] element = release.getnext() while element is not None and element.tag != "h3": content.append(etree.tostring(element).decode()) element = element.getnext() entry = f"""\ https://grapheneos.org/releases#{title} {title} {time}
{"".join(content)}
""" entries.append(entry) feed = f""" https://grapheneos.org/releases#changelog GrapheneOS changelog {updated} GrapheneOS contact@grapheneos.org https://grapheneos.org/ {"".join(entries)} """ with open("static_tmp/releases.atom", "w") as f: f.write(feed)