summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolderpunk <solderpunk@sdf.org>2020-03-16 18:42:58 +0100
committerSolderpunk <solderpunk@sdf.org>2020-03-16 18:42:58 +0100
commitfac6f4ad73319622af0a43b6a05233e064085d8d (patch)
treee6b5081453ffcebe5c2775d87855ecaccb3acf43
parent93283c56c50521ba87f5d3c20473823fe2efb575 (diff)
Initial proof-of-concept implementation.
-rw-r--r--gemfeed.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/gemfeed.py b/gemfeed.py
new file mode 100644
index 0000000..42d23d7
--- /dev/null
+++ b/gemfeed.py
@@ -0,0 +1,47 @@
+import datetime
+import glob
+import os.path
+
+from feedgen.feed import FeedGenerator
+
+base_url = "gemini://gemini.circumlunar.space/"
+
+feed = FeedGenerator()
+feed.id(base_url)
+feed.title('A Gemini feed.')
+feed.link( href=base_url, rel='alternate' )
+feed.link( href=base_url + "atom.xml", rel='self' )
+
+files = []
+for extension in ("gmi", "gem", "gemini"):
+ files.extend(glob.glob("*.{}".format(extension)))
+ index = "index.{}".format(extension)
+ if index in files:
+ files.remove(index)
+
+latest_update = datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)
+
+for filename in files:
+ entry = feed.add_entry()
+ url = base_url + filename
+ entry.guid(url)
+ entry.link(href=url)
+ updated = os.path.getctime(filename)
+ updated = datetime.datetime.fromtimestamp(updated, tz=datetime.timezone.utc)
+ entry.updated(updated)
+ if updated > latest_update:
+ latest_update = updated
+ with open(filename) as fp:
+ for line in fp:
+ if line.startswith("#"):
+ while line[0] == "#":
+ line = line[1:]
+ title = line.strip()
+ break
+ else:
+ title = filename
+ print("Adding {} with title '{}'...".format(filename, title))
+ entry.title(title)
+
+feed.updated(latest_update)
+feed.atom_file('atom.xml', pretty=True)