aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2026-03-22 19:28:12 +0100
committeralex <alex@pdp7.net>2026-03-22 19:28:12 +0100
commit5b34b41bd33b0a8602625ae4b9946c95d0839502 (patch)
tree21e00df5eb9c13fc81521f63067e2e6baeebfc1c
parent5a560cb4c986b70e54955587671807457bb61b84 (diff)
Add feed toolsHEADmain
-rw-r--r--README.md16
-rw-r--r--parse-feed.py25
-rw-r--r--reparse-feed.py5
3 files changed, 46 insertions, 0 deletions
diff --git a/README.md b/README.md
index b2c3c7c..fd2b50c 100644
--- a/README.md
+++ b/README.md
@@ -59,3 +59,19 @@ Because gemtext is such a simple format, many traditional authoring techniques b
For example, adding a header or a footer to many pages can be done by plain text file concatenation.
`gemini-to-web` includes an indexer that can generate a reverse-chronological list of articles automatically to simplify maintenance of a blog-like site.
+
+## Creating aggregators
+
+This repo contains a few scripts that can help you work with Gemini subscriptions.
+
+```
+#!/bin/sh
+
+echo "# Feeds"
+echo
+
+{
+ python3 gemget.py gemini://aperalesf.flounder.online/gemlog | python3 parse-feed.py gemini://aperalesf.flounder.online/gemlog "Gemlog de Adrián Perales"
+ python3 gemget.py gemini://alex.corcoles.net | python3 parse-feed.py gemini://alex.corcoles.net "El blog es mío"
+} | sort -r | head -20 | python3 reparse-feed.py
+```
diff --git a/parse-feed.py b/parse-feed.py
new file mode 100644
index 0000000..8fd66f3
--- /dev/null
+++ b/parse-feed.py
@@ -0,0 +1,25 @@
+import fileinput
+import re
+import sys
+
+import urllib.parse
+urllib.parse.uses_relative += ["gemini"]
+urllib.parse.uses_netloc += ["gemini"]
+
+
+base_url = sys.argv[1]
+
+page_title = sys.argv[2]
+
+for line in sys.stdin.read().splitlines():
+ if not line.startswith("=> "):
+ continue
+ _, url, text = line.split(maxsplit=2)
+
+ url = urllib.parse.urljoin(base_url, url)
+
+ match = re.match(r"(\d{4}-\d{2}-\d{2})\s+(.*)", text)
+ if not match:
+ continue
+ date, title = match.groups()
+ print(date, url, f"{page_title} - {title}")
diff --git a/reparse-feed.py b/reparse-feed.py
new file mode 100644
index 0000000..4d8d5e8
--- /dev/null
+++ b/reparse-feed.py
@@ -0,0 +1,5 @@
+import sys
+
+for line in sys.stdin.read().splitlines():
+ date, url, title, = line.split(maxsplit=2)
+ print(f"=> {url} {date} {title}")