From bc10dad660f4dd6846a73a7e99e2956443b6e5bf Mon Sep 17 00:00:00 2001 From: drifty Date: Thu, 7 Aug 2025 21:07:30 +0530 Subject: [PATCH] Create generate_rss.py --- scripts/generate_rss.py | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 scripts/generate_rss.py diff --git a/scripts/generate_rss.py b/scripts/generate_rss.py new file mode 100644 index 0000000..9f457bb --- /dev/null +++ b/scripts/generate_rss.py @@ -0,0 +1,42 @@ +# scripts/generate_rss.py + +import os +import requests +from feedgenerator import Rss201rev2Feed + +OWNER = os.getenv("REPO_OWNER") +REPO = os.getenv("REPO_NAME") +BRANCH = os.getenv("REPO_BRANCH", "main") + +rss = Rss201rev2Feed( + title=f"{REPO} commit diffs", + link=f"https://github.com/{OWNER}/{REPO}", + description="RSS feed of latest commit diffs", + language="en" +) + +commits = requests.get( + f"https://api.github.com/repos/{OWNER}/{REPO}/commits?sha={BRANCH}" +).json() + +for commit in commits[:10]: # Limit to 10 latest commits + sha = commit["sha"] + message = commit["commit"]["message"].split("\n")[0] + url = commit["html_url"] + diff = requests.get( + f"https://api.github.com/repos/{OWNER}/{REPO}/commits/{sha}", + headers={"Accept": "application/vnd.github.v3.diff"} + ).text + + short_diff = "\n".join(diff.splitlines()[:20]) # First 20 lines only + + rss.add_item( + title=message, + link=url, + description=f"
{short_diff}
", + unique_id=sha + ) + +os.makedirs("public", exist_ok=True) +with open("public/feed.xml", "w", encoding="utf-8") as f: + rss.write(f, "utf-8")