summaryrefslogtreecommitdiff
path: root/build-feed.py
diff options
context:
space:
mode:
Diffstat (limited to 'build-feed.py')
-rwxr-xr-xbuild-feed.py26
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)