💾 Archived View for yujiri.xyz › gem2rss.py captured on 2024-08-31 at 12:10:30.
⬅️ Previous capture (2024-08-18)
-=-=-=-=-=-=-
import sys, re, urllib.parse from datetime import datetime from xml.sax.saxutils import escape if len(sys.argv) < 2: print("pass main URL") sys.exit(1) main_url = sys.argv[1] date_regex = '[0-9]{4}-[0-9]{2}-[0-9]{2}' link_regex = re.compile(f'=> ([^ ]+) +({date_regex}) +(.+)') lines = sys.stdin.readlines() feed_title = None entries = [] in_preformatted = False for line in lines: if in_preformatted: if line.startswith("```"): in_preformatted = False continue if not feed_title: if line.startswith("# "): feed_title = line[2:-1] continue match = link_regex.match(line) if match is None: continue entries.append(match.groups()) print(f"""<?xml version="1.0"?> <rss version="2.0"> <channel> <link>{main_url}</link> <description/>""") if feed_title: print(f"<title>{escape(feed_title)}</title>") for entry in entries: (link, date, title) = entry if title.startswith("- "): title = title[2:] print(f"<item><title>{escape(title)}</title>") date = datetime.strptime(date, "%Y-%m-%d").replace(hour=12) date.replace(hour=12) print(f"<pubDate>{date.strftime('%a, %d %b %Y %H:%M:%S')} GMT</pubDate>") url = urllib.parse.urlparse(link) if not url.scheme: url = main_url + link print(f"<link>{url}</link><guid>{url}</guid>") print("<description/></item>") print("</channel></rss>")