diff options
| author | alex <alex@pdp7.net> | 2026-02-15 19:42:47 +0100 |
|---|---|---|
| committer | alex <alex@pdp7.net> | 2026-02-15 19:42:47 +0100 |
| commit | 6b57ca7b17c003cffa37d00838b6f95b608d0c85 (patch) | |
| tree | da3a99c34be6dc174f8a5a12a8e143ed4f6cc275 | |
| parent | be90f271f07b1234cef85a234211b3d3344cc2af (diff) | |
Extract RSS title and subtitle from headers
(Like gemfeed does.)
Also make base-url parameter mandatory.
| -rwxr-xr-x | gemini-to-web/example/build.sh | 4 | ||||
| -rw-r--r-- | gemini-to-web/src/gemini_to_web/rss.py | 22 |
2 files changed, 18 insertions, 8 deletions
diff --git a/gemini-to-web/example/build.sh b/gemini-to-web/example/build.sh index 95d7641..65de0e2 100755 --- a/gemini-to-web/example/build.sh +++ b/gemini-to-web/example/build.sh @@ -19,12 +19,14 @@ cp -r source/* target/ cat <<HEAD # Welcome to my blog +## Subtitle + HEAD find . -path './source/2???/??/*.gmi' -type f -print0 | uv --project .. run coppewebite-indexer source/ } >target/index.gmi # Generate an RSS feed. -uv --project .. run coppewebite-to-rss <target/index.gmi >target/index.rss --title Example --subtitle Subtitle --base-url https://www.example.com target/ +uv --project .. run coppewebite-to-rss <target/index.gmi >target/index.rss https://www.example.com target/ # Convert all gemtext to HTML. find target -name '*.gmi' -exec sh -c 'uv --project .. run coppewebite-to-html <{} >$(echo {} | sed s/.gmi/.html/)' ';' diff --git a/gemini-to-web/src/gemini_to_web/rss.py b/gemini-to-web/src/gemini_to_web/rss.py index a03a4aa..40bb025 100644 --- a/gemini-to-web/src/gemini_to_web/rss.py +++ b/gemini-to-web/src/gemini_to_web/rss.py @@ -13,21 +13,29 @@ from gemini_to_web import parser def cli_to_rss(): argument_parser = argparse.ArgumentParser() - argument_parser.add_argument("--title", default="") + argument_parser.add_argument("--title", default=None) argument_parser.add_argument("--subtitle", default=None) - argument_parser.add_argument("--base-url", default="") + argument_parser.add_argument("base_url") argument_parser.add_argument("base_dir", type=pathlib.Path) args = argument_parser.parse_args() - fg = feed.FeedGenerator() - fg.title(args.title) - fg.subtitle(args.subtitle) - fg.link(href=args.base_url, rel="self") - input_ = sys.stdin.read() parsed = parser.parse(input_) parsed = list(parsed) + title = args.title + if not title: + title = [p for p in parsed if isinstance(p, parser.HeadingLine) and p.level == 1][0].heading_text + + subtitle = args.subtitle + if not subtitle: + subtitle = [p for p in parsed if isinstance(p, parser.HeadingLine) and p.level == 2][0].heading_text + + fg = feed.FeedGenerator() + fg.title(title) + fg.subtitle(subtitle) + fg.link(href=args.base_url, rel="self") + entries = [] for element in parsed: match element: |
