summaryrefslogtreecommitdiff
path: root/generate-feed.py
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2021-07-10 12:04:45 -0400
committerDaniel Micay <danielmicay@gmail.com>2021-07-10 12:04:45 -0400
commit406004cdf8719ef583091d2c1f97e6e3a804a00a (patch)
tree42f340390d8576c4d68eb29f9ce24ec28fcb504b /generate-feed.py
parent20a0b34f986d5225304e02ba44a0b78f986a0865 (diff)
rename generate_feed.py to generate-feed.py
Diffstat (limited to 'generate-feed.py')
-rwxr-xr-xgenerate-feed.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/generate-feed.py b/generate-feed.py
new file mode 100755
index 00000000..c1e749bd
--- /dev/null
+++ b/generate-feed.py
@@ -0,0 +1,52 @@
+#!/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"]
+ 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)