From 158c3206d67b0b1ae5f24d20682f97ec2a9069cc Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Fri, 5 Mar 2021 18:19:38 -0500 Subject: bin: update feed Generate a single feed for all sections at /feed.atom --- bin/feed | 31 ++++++++++++++++--------------- templates/atom/feed.atom | 6 +++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/bin/feed b/bin/feed index e8c962e..b2300d7 100644 --- a/bin/feed +++ b/bin/feed @@ -15,11 +15,10 @@ import sys import mistune URL = "https://fsf.org.in" -SECTIONS = ["news", "article"] +SECTIONS = ["news", "article", "case-study"] +TARGET = "/".join(["_build", "feed.atom"]) F_PH = { - "name": "", - "link": "", "updated": "", "entries": "", } @@ -105,10 +104,6 @@ def elink(sec, s, l): return "/".join([URL, sec, s, l]) -def flink(sec): - return "/".join([URL, sec, "feed.atom"]) - - def time(c): m = re.search(r"pubdate: ([0-9]{8})", c) @@ -183,30 +178,36 @@ def esort(esd): return es -def feed(sec, es): +def feed(es): f = template("feed") - f = f.replace(F_PH["name"], sec.capitalize(), 2) - f = f.replace(F_PH["link"], flink(sec), 1) f = f.replace(F_PH["updated"], now(), 1) f = f.replace(F_PH["entries"], es, 1) return f -def process(sec): - esd = {} +def process(sec, esd): for f in files(sec): id, e = entry(sec, f) esd[id] = e - es = "".join(esort(esd)) + return esd + - write("/".join(["_build", sec, "feed.atom"]), feed(sec, es)) +def stringify(esd): + return "".join(esort(esd)) + + +def commit(es): + write(TARGET, feed(es)) def run(): + esd = {} for sec in SECTIONS: - process(sec) + esd = process(sec, esd) + + commit(stringify(esd)) if __name__ == "__main__": diff --git a/templates/atom/feed.atom b/templates/atom/feed.atom index f248c1b..c601529 100644 --- a/templates/atom/feed.atom +++ b/templates/atom/feed.atom @@ -1,8 +1,8 @@ - <!-- Feed Name --> Feed - Free Software Foundation of India - https://fsf.org.in/.atom - + Free Software Foundation of India - Feed + https://fsf.org.in/feed.atom + Free Software Foundation of India -- cgit v1.2.3