From 92b87e4bc2261d1533b6443d1ec72b7589df2dd3 Mon Sep 17 00:00:00 2001 From: cashmere Date: Sat, 20 Jun 2026 00:02:33 +0200 Subject: app.py: build_opml --- src/technical_renaissance/app.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/technical_renaissance/app.py b/src/technical_renaissance/app.py index 6d63180..5519027 100644 --- a/src/technical_renaissance/app.py +++ b/src/technical_renaissance/app.py @@ -4,6 +4,7 @@ import random import tomllib from pathlib import Path from typing import TypedDict +from xml.etree import ElementTree from robyn import Request, Response, Robyn from robyn.templating import JinjaTemplate @@ -65,4 +66,21 @@ async def random_user(_request: Request): return redirect(random.choice(users)["url"]) +def build_opml() -> str: + opml = ElementTree.Element("opml", version="2.0") + head = ElementTree.SubElement(opml, "head") + ElementTree.SubElement(head, "title").text = "Technical Renaissance Webring" + body = ElementTree.SubElement(opml, "body") + for user in users: + if user["feed"]: + ElementTree.SubElement( + body, + "outline", + text=user["name"], + type="rss", + xmlUrl=user["feed"], + htmlUrl=user["url"], + ) + return ElementTree.tostring(opml, encoding="unicode", xml_declaration=True) + app.start(host="127.0.0.1", port=8080) -- cgit v1.3.1