From 28ef8c28422882150bef4874b3030321aff8add0 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Mon, 21 Feb 2022 16:18:30 +0100 Subject: [wip] Make list of concert items in RSS feed --- build-feed.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'build-feed.py') diff --git a/build-feed.py b/build-feed.py index 7295563..e2c8244 100755 --- a/build-feed.py +++ b/build-feed.py @@ -4,7 +4,7 @@ from sys import argv from urllib.parse import urljoin from xml.etree.ElementTree import Element, SubElement, indent, tostring -from helpers import guess_language +from helpers import guess_language, read_concerts, tmplocale LOCALIZED_TEXT = { @@ -20,6 +20,15 @@ LOCALIZED_TEXT = { }, } +LOCALIZED_FORMATS = { + 'en': { + 'title': lambda c: f'{c.time.strftime("%B %-d %Y")} in {c.place}', + }, + 'fr': { + 'title': lambda c: f'{c.time.strftime("%-d %B %Y")} à {c.place}', + }, +} + def text_element(tag, text, /, **kwargs): elt = Element(tag, **kwargs) @@ -27,6 +36,20 @@ def text_element(tag, text, /, **kwargs): return elt +def generate_concerts(concerts_src, lang): + formatters = LOCALIZED_FORMATS[lang] + + for c in read_concerts(concerts_src): + item = Element('item') + + with tmplocale(lang): + title = formatters['title'](c) + + item.append(text_element('title', title)) + + yield item + + def main(concerts_src, feed_dst, domain): lang = guess_language(concerts_src) text = LOCALIZED_TEXT[lang] @@ -52,6 +75,9 @@ def main(concerts_src, feed_dst, domain): channel.append(text_element('language', lang)) + items = generate_concerts(concerts_src, lang) + channel.extend(tuple(items)) + indent(rss) with open(feed_dst, 'wb') as feed: -- cgit v1.2.3