quatuorbellefeuille.com

Content, build scripts and admin scripts for the Bellefeuille Quartet website.
git clone https://git.kevinlegouguec.net/quatuorbellefeuille.com
Log | Files | Refs

commit 8ea5a391e289c4e35995b00b9ef5ec91a26cb5d7
parent 6d9636d35c5d0d244208165010bb70635c98ab2c
Author: Kévin Le Gouguec <kevin.legouguec@gmail.com>
Date:   Mon, 21 Feb 2022 15:44:44 +0100

[wip] Reorganize RSS builder code

Diffstat:
Mbuild-feed.py | 50+++++++++++++++++++++++++++++---------------------
1 file changed, 29 insertions(+), 21 deletions(-)

diff --git a/build-feed.py b/build-feed.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 +from sys import argv from urllib.parse import urljoin from xml.etree.ElementTree import Element, SubElement, indent, tostring - -DOMAIN = 'quatuorbellefeuille.com' -LANG = 'fr' +from helpers import guess_language LOCALIZED_TEXT = { @@ -21,9 +20,6 @@ LOCALIZED_TEXT = { }, } -URL = f'https://{DOMAIN}' -INDEX_URL = urljoin(URL, LOCALIZED_TEXT[LANG]['indexpath']) - def text_element(tag, text, /, **kwargs): elt = Element(tag, **kwargs) @@ -31,24 +27,36 @@ def text_element(tag, text, /, **kwargs): return elt -rss = Element('rss', version='2.0') +def main(concerts_src, feed_dst, domain): + lang = guess_language(concerts_src) + text = LOCALIZED_TEXT[lang] + + url = f'https://{domain}' + index_url = urljoin(url, text['indexpath']) + + rss = Element('rss', version='2.0') + + channel = SubElement(rss, 'channel') + + channel.extend(( + text_element('title', text['title']), + text_element('link', index_url), + text_element('description', text['description']), + )) -channel = SubElement(rss, 'channel') + image = SubElement(channel, 'image') + image.extend(( + text_element('url', urljoin(url, 'images/logo.svg')), + text_element('link', urljoin(index_url, 'concerts.html')), + )) -channel.extend(( - text_element('title', LOCALIZED_TEXT[LANG]['title']), - text_element('link', INDEX_URL), - text_element('description', LOCALIZED_TEXT[LANG]['description']), -)) + channel.append(text_element('language', lang)) -image = SubElement(channel, 'image') -image.extend(( - text_element('url', urljoin(URL, 'images/logo.svg')), - text_element('link', urljoin(INDEX_URL, 'concerts.html')), -)) + indent(rss) -channel.append(text_element('language', LANG)) + with open(feed_dst, 'wb') as feed: + feed.write(tostring(rss, encoding='utf-8', xml_declaration=True)) -indent(rss) -print(tostring(rss, encoding='utf-8', xml_declaration=True).decode()) +if __name__ == '__main__': + main(argv[1], argv[2], argv[3])