From 236d8a9cd037bedd560b0141bf15d845b101b980 Mon Sep 17 00:00:00 2001 From: Solderpunk Date: Wed, 18 Mar 2020 18:32:00 +0100 Subject: [PATCH] Factor things out into functions. --- capcom.py | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/capcom.py b/capcom.py index ba298c2..ab23c5e 100644 --- a/capcom.py +++ b/capcom.py @@ -4,28 +4,23 @@ import time import feedparser import gusmobile -feeds = [ +def load_feed_urls(): + return ( "gemini://carcosa.net:1965/send-the-nukes/atom.xml", "gemini://gemini.circumlunar.space:1965/users/solderpunk/hitenheroes/posts/atom.xml", - ] + ) -def main(): - items = [] - for feed_url in feeds: - print("Fetching ", feed_url) - resp = gusmobile.fetch(feed_url) - if resp.status == "20": - feed_text = resp.content - feed = feedparser.parse(feed_text) - for entry in feed.entries: - items.append((entry.updated_parsed, entry.link, entry.title, feed.feed.title)) - items.sort(reverse=True) +def items_from_feed_string(feed_str): + feed_obj = feedparser.parse(feed_str) + feed = feed_obj.feed + return [(entry.updated_parsed, entry.link, entry.title, feed.title) for entry in feed_obj.entries] + +def format_aggregated(items, n_feeds): current_day = (0,0) print("# CAPCOM Gemini feed aggregator") print("") - print("Aggregating {} Atom feeds from Geminispace.".format(len(feeds))) - for item in items[0:64]: - updated, link, entry_title, feed_title = item + print("Aggregating {} Atom feeds from Geminispace.".format(n_feeds)) + for updated, link, entry_title, feed_title in items: item_day = (updated.tm_year, updated.tm_yday) if item_day != current_day: current_day = item_day @@ -34,5 +29,17 @@ def main(): print("") print("=> {} {} - {}".format(link, feed_title, entry_title)) +def main(): + feed_urls = load_feed_urls() + items = [] + for feed_url in feed_urls: + print("Fetching ", feed_url) + resp = gusmobile.fetch(feed_url) + if resp.status == "20": + items.extend(items_from_feed_string(resp.content)) + items.sort(reverse=True) + items = items[0:64] + format_aggregated(items, len(feed_urls)) + if __name__ == "__main__": main()