#!/usr/bin/env python import email.utils import glob import json import xml.etree.ElementTree as ET # This is what we're aiming to generate: # # <?xml version="1.0" encoding="UTF-8"?> # <opml version="1.0"> # <head> # <title>RSS subscriptions for wes@wezm.net</title> # <dateCreated>Sun, 05 May 2024 02:54:31 +0000</dateCreated> # <ownerEmail>wes@wezm.net</ownerEmail> # </head> # <body> # <outline text="3D Printing" title="3D Printing"> # <outline text="CadHub Blog" title="CadHub Blog" type="rss" xmlUrl="https://learn.cadhub.xyz/blog/rss.xml" htmlUrl="https://learn.cadhub.xyz/blog"/> # </outline> # </body> # </opml> opml = ET.Element("opml") head = ET.SubElement(opml, "head") title = ET.SubElement(head, "title") title.text = "YouTube Subscription" dateCreated = ET.SubElement(head, "dateCreated") dateCreated.text = email.utils.formatdate(timeval=None, localtime=True) body = ET.SubElement(opml, "body") youtube = ET.SubElement(body, "outline", {"title": "YouTube", "text": "YouTube"}) for path in glob.glob("json/*.json"): with open(path) as f: info = json.load(f) ET.SubElement(youtube, "outline", info, type="rss", text=info["title"]) ET.indent(opml) print(ET.tostring(opml, encoding="unicode", xml_declaration=True))