summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild-concerts.py14
-rwxr-xr-xbuild-feed.py28
-rw-r--r--helpers.py12
3 files changed, 40 insertions, 14 deletions
diff --git a/build-concerts.py b/build-concerts.py
index 7b0f75d..d1a7c11 100755
--- a/build-concerts.py
+++ b/build-concerts.py
@@ -1,13 +1,11 @@
#!/usr/bin/env python3
-from contextlib import contextmanager
from datetime import datetime
-import locale
from pathlib import Path
import re
from sys import argv
-from helpers import guess_language, read_concerts, relative_path
+from helpers import guess_language, read_concerts, relative_path, tmplocale
# TODO: change some jargon:
@@ -65,16 +63,6 @@ THUMBNAIL_TEMPLATE = '''\
'''
-@contextmanager
-def tmplocale(lang):
- old_lang, encoding = locale.getlocale()
- try:
- locale.setlocale(locale.LC_TIME, (lang, encoding))
- yield
- finally:
- locale.setlocale(locale.LC_TIME, (old_lang, encoding))
-
-
def format_credits(illustration):
credits = illustration.source_name
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:
diff --git a/helpers.py b/helpers.py
index 162d39e..87ed9c1 100644
--- a/helpers.py
+++ b/helpers.py
@@ -1,5 +1,7 @@
+from contextlib import contextmanager
from dataclasses import dataclass
from datetime import datetime
+import locale
from operator import attrgetter
from os import path
from pathlib import Path
@@ -21,6 +23,16 @@ def relative_path(*, to, ref):
return path.relpath(to, Path(ref).parent)
+@contextmanager
+def tmplocale(lang):
+ old_lang, encoding = locale.getlocale()
+ try:
+ locale.setlocale(locale.LC_TIME, (lang, encoding))
+ yield
+ finally:
+ locale.setlocale(locale.LC_TIME, (old_lang, encoding))
+
+
_LICENSE_URLS = {
'CC0': 'https://creativecommons.org/publicdomain/zero',
'CC BY': 'https://creativecommons.org/licenses/by',