summaryrefslogtreecommitdiff
path: root/build-feed.py
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2022-02-21 16:18:30 +0100
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2022-02-21 16:18:30 +0100
commit28ef8c28422882150bef4874b3030321aff8add0 (patch)
tree674d30c8c2e2e60dbc2a6f1b288d72105d591ff7 /build-feed.py
parent8ea5a391e289c4e35995b00b9ef5ec91a26cb5d7 (diff)
downloadquatuorbellefeuille.com-28ef8c28422882150bef4874b3030321aff8add0.tar.xz
[wip] Make list of concert items in RSS feed
Diffstat (limited to 'build-feed.py')
-rwxr-xr-xbuild-feed.py28
1 files changed, 27 insertions, 1 deletions
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: