From c7ff1c0a664803e9788a73b9edfbe4606aa2eee7 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sun, 18 May 2025 20:31:14 -0600 Subject: add rss feed --- html/feed/create_feed.py | 61 +++++++++++++++++++++++++++++++++ html/feed/items/news_feed_available.xml | 6 ++++ 2 files changed, 67 insertions(+) create mode 100644 html/feed/create_feed.py create mode 100644 html/feed/items/news_feed_available.xml (limited to 'html/feed') diff --git a/html/feed/create_feed.py b/html/feed/create_feed.py new file mode 100644 index 00000000..17f2afdf --- /dev/null +++ b/html/feed/create_feed.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +"""Create a rss feed from a list of item files""" + +import argparse +from email.utils import parsedate_to_datetime, formatdate +from datetime import datetime +from string import Template +import sys +import xml.etree.ElementTree as ET + +FEED_HEAD = """ + + +$title +$link +$description +$language +$pubDate""" + +FEED_TAIL = """ +""" + + +def item_date_to_epoch(item) -> int: + """return the time from epoch to the pubDate of an item""" + pub_date = item.find('pubDate') + date = parsedate_to_datetime(pub_date.text) + return date.timestamp() + + +def main(): + """read item files sort them and print a sorted rss feed""" + parser = argparse.ArgumentParser() + parser.add_argument('--link', default='https://muhq.space/muhqs-game') + parser.add_argument('--title', default="Muhq's Game") + parser.add_argument('--description', + default="What is happening with muhq's game?") + parser.add_argument('--language', default='en') + parser.add_argument('--pubDate', default='Sun, 18 May 2025 20:21:20 -0600') + parser.add_argument('items', nargs='*') + args = parser.parse_args() + + head = Template(FEED_HEAD) + print(head.substitute(**args.__dict__)) + + items = [] + for item_path in args.items: + items.append(ET.parse(item_path)) + + items.sort(reverse=True, key=item_date_to_epoch) + + last_build_date = formatdate(datetime.now().timestamp()) + print(f'{last_build_date}') + for item in items: + item.write(sys.stdout, encoding='unicode') + print() + print(FEED_TAIL) + + +if __name__ == '__main__': + main() diff --git a/html/feed/items/news_feed_available.xml b/html/feed/items/news_feed_available.xml new file mode 100644 index 00000000..19b2d90d --- /dev/null +++ b/html/feed/items/news_feed_available.xml @@ -0,0 +1,6 @@ + +News feed available +Stay informed about what is happening with muhq's game. +https://muhq.space/muhqs-game +Sun, 18 May 2025 20:22:47 -0600 + -- cgit v1.2.3