From 8ea5a391e289c4e35995b00b9ef5ec91a26cb5d7 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Mon, 21 Feb 2022 15:44:44 +0100 Subject: [wip] Reorganize RSS builder code --- build-feed.py | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) (limited to 'build-feed.py') diff --git a/build-feed.py b/build-feed.py index 5b14326..7295563 100755 --- 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]) -- cgit v1.2.3