diff options
| -rwxr-xr-x | build-feed.py | 26 |
1 files changed, 17 insertions, 9 deletions
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) |
