diff options
| -rw-r--r-- | README.md | 16 | ||||
| -rw-r--r-- | parse-feed.py | 25 | ||||
| -rw-r--r-- | reparse-feed.py | 5 |
3 files changed, 46 insertions, 0 deletions
@@ -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}") |
