From 836aaf1fdfa5a60d261ed6e06e880d08b1b68bd0 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Mon, 21 Feb 2022 19:11:20 +0100 Subject: [wip] Make list of concert items in RSS feed (cont'd) --- build-feed.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'build-feed.py') diff --git a/build-feed.py b/build-feed.py index e2c8244..d3409f9 100755 --- a/build-feed.py +++ b/build-feed.py @@ -36,18 +36,25 @@ def text_element(tag, text, /, **kwargs): return elt -def generate_concerts(concerts_src, lang): +def generate_concert(concert, concerts_url, lang): formatters = LOCALIZED_FORMATS[lang] - for c in read_concerts(concerts_src): - item = Element('item') + item = Element('item') + + with tmplocale(lang): + title = formatters['title'](concert) + item.append(text_element('title', title)) + + anchor = f'concert-{concert.time.strftime("%F")}' + item.append(text_element('link', f'{concerts_url}#{anchor}')) - with tmplocale(lang): - title = formatters['title'](c) + return item - item.append(text_element('title', title)) - yield item +def generate_concerts(concerts_src, concerts_url, lang): + + for c in read_concerts(concerts_src): + yield generate_concert(c, concerts_url, lang) def main(concerts_src, feed_dst, domain): @@ -56,6 +63,7 @@ def main(concerts_src, feed_dst, domain): url = f'https://{domain}' index_url = urljoin(url, text['indexpath']) + concerts_url = urljoin(index_url, 'concerts.html') rss = Element('rss', version='2.0') @@ -70,12 +78,12 @@ def main(concerts_src, feed_dst, domain): image = SubElement(channel, 'image') image.extend(( text_element('url', urljoin(url, 'images/logo.svg')), - text_element('link', urljoin(index_url, 'concerts.html')), + text_element('link', concerts_url), )) channel.append(text_element('language', lang)) - items = generate_concerts(concerts_src, lang) + items = generate_concerts(concerts_src, concerts_url, lang) channel.extend(tuple(items)) indent(rss) -- cgit v1.2.3