From 260ce34d1bba1e232c9160e2141bccd115d10339 Mon Sep 17 00:00:00 2001 From: Reto Bollinger Date: Wed, 27 Nov 2024 20:34:37 +0100 Subject: [PATCH] Starting to replace those ugly shell-scripts with more readable python-scripts (tough more complex to invoke) --- lektor/docker/Dockerfile | 4 +++ lektor/docker/entrypoint.sh | 2 +- lektor/lektordata/scripts/calendar-fetcher.py | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 lektor/lektordata/scripts/calendar-fetcher.py diff --git a/lektor/docker/Dockerfile b/lektor/docker/Dockerfile index e256ef2..684a847 100644 --- a/lektor/docker/Dockerfile +++ b/lektor/docker/Dockerfile @@ -6,6 +6,10 @@ RUN pipx install lektor RUN mkdir -p /opt/lektor/project && mkdir -p /opt/lektor/output RUN sed -i '/de_DE.UTF-8/s/^# //g' /etc/locale.gen && locale-gen +RUN python3 -m venv /opt/venv + +RUN . /opt/venv/bin/activate && pip install ics requests + COPY entrypoint.sh /opt/entrypoint.sh RUN chmod +x /opt/entrypoint.sh diff --git a/lektor/docker/entrypoint.sh b/lektor/docker/entrypoint.sh index 4ac30da..aa2ba68 100644 --- a/lektor/docker/entrypoint.sh +++ b/lektor/docker/entrypoint.sh @@ -1,5 +1,5 @@ #!/bin/bash -/opt/lektor/scripts/calendar-fetcher.sh ${CALENDAR_URL} > /opt/lektor/project/content/termine/contents.lr +sh -c ". /opt/venv/bin/activate && exec python /opt/lektor/scripts/calendar-fetcher.py ${CALENDAR_URL} > /opt/lektor/project/content/termine/contents.lr" /opt/lektor/scripts/calendar-fetcher-main.sh ${CALENDAR_URL} > /opt/lektor/project/content/contents.lr /root/.local/bin/lektor --project /opt/lektor/project server --host 0.0.0.0 \ No newline at end of file diff --git a/lektor/lektordata/scripts/calendar-fetcher.py b/lektor/lektordata/scripts/calendar-fetcher.py new file mode 100644 index 0000000..9cfc291 --- /dev/null +++ b/lektor/lektordata/scripts/calendar-fetcher.py @@ -0,0 +1,31 @@ +import sys +import requests +from ics import Calendar +import arrow +import locale + +if len(sys.argv) != 2: + print("Usage: python3 {} ".format(sys.argv[0])) + +url = sys.argv[1] + +c = Calendar(requests.get(url).text) + +locale.setlocale(locale.LC_TIME, locale.normalize("de_DE.UTF-8")) + +print("_model: page") +print("---") +print("title: Termine") +print("---") +print("body:") +print("") +for event in list(c.timeline.start_after(arrow.now())): + print("*
{}
 ".format(event.name)) + print(" *
{}
 ".format(event.begin.strftime("%a. %-d. %B %Y"))) + print(" *
{}
 ".format(event.begin.strftime("%-H:%M") if not event.all_day else " ")) + print(" *
{}
 ".format(event.location if event.location != None else " ")) +print("") +print("---") +print("_template: page.html") +print("") +print("") \ No newline at end of file