Mo 20. Dezember 2021, Vitali Repin
Das Jahr geht zu Ende und es werden die ersten Vorbereitungen für das nächste Jahr getroffen. Dazu gehört für mich auch das alljährliche importieren der Abfall-Termine. Damit ich nicht vergesse, denn eingetrockneten Weihnachtsbaum rechtzeitig rauszustellen, benötige ich bei den importierten Termine auch eine sinnvolle Erinnerung, am besten einen Tag zuvor.
Die Termine für die Abfallentsorgung werden in meinem Falle von der Gemeinde durch einen Service in Form einer Webansicht, als PDF zum Ausdrucken und in einem ICS-Format zur Verfügung gestellt.
Mich interessiert natürlich die ICS Datei, um diese in eine Kalenderapplikation importieren zu können. Leider ist es mir nicht gelungen in den meist verwendeten Programmen wie TB-Lightning, KOrganizer oder Evolution für die importierten Termine eine fest vorgegebene Erinnerung zu definieren. Es war lediglich möglich jeden Termin einzeln zu bearbeiten, um eine individuelle Erinnerung hinzuzufügen.
Ich bin daher den Weg gegangen, die .ics-Datei zu editieren. Im Prinzip handelt es sich dabei um eine Textdatei, welche sich mit beliebigem Editor bearbeiten lässt. Dadurch lässt sich auch ein Alarm definieren. Die .ics-Datei sieht wie folgt aus:
BEGIN:VCALENDAR
... diverse Zeilen
BEGIN:VEVENT
... diverse Zeilen
END:VEVENT
BEGIN:VEVENT
...diverse Zeilen
END:VEVENT
END:VCALENDAR
Hier lässt sich pro VEVENT ein Alarm hinzufügen. Ich möchte einen Tag davor um 15 Uhr erinnert werden:
BEGIN:VALARM
TRIGGER:-PT9H
ACTION:DISPLAY
END:VALARM
END:VEVENT
Zur Erklärung: Eine Erinnerungsdefinition beginnt mit BEGIN:VALARM und endet mit END:VALARM. Ein Alarm benötigt einen Trigger (-9 Stunden für 15:00 Uhr) und eine Aktion. Das Ganze lässt mit einem Befehl im vim Editor erledigen und zu jedem Termin wird automatisch eine Erinnerung hinzugefügt:
:%s/END:VEVENT/BEGIN:VALARM\rTRIGGER:-PT9H\rACTION:DISPLAY\rEND:VALARM\rEND:VEVENT/g
Und diejenigen, die mit vim nichts anfangen können, können dies mit jedem beliebigen Texteditor durch das Suchen von (END:VEVENT) und durch das Ersetzen durch folgende Zeilen erreichen:
BEGIN:VALARM
TRIGGER:-PT9H
ACTION:DISPLAY
END:VALARM
END:VEVENT
Standet ihr vor einer ähnlichen Herausforderung und konntet andere Lösungsvorschläge erarbeiten, dann lasst es mich doch in den Kommentaren wissen.
Ah, sowas habe ich schon länger gesucht. Vielen Dank für den Tipp!!
Herrlich, die vim-Lösung gefällt richtig gut! Hätte ja auch so einfach sein können...
Hab mir in der Vergangenheit mal ein Python Skript dafür gebaut und später in eine Webanwendung gekippt: https://finnchristiansen.de/projekt/reminder-erinnerungen-fuer-ics-dateien
Wäre ja ein nettes Feature, wenn die Abfallunternehmen die Erinnerung optional beim Download mit anbieten würden.
Der Einfall mit dem Texteditor kam erst am ende, nachdem ich einen Tag davor alle möglichen Kalender-Apps ausprobierte und auch in der Community nachgefragt habe, stellten wir schnell fest die Funktion gibt so nicht. Erst danach wollte ich wissen wie die ICS Datei aufgebaut ist, und siehe da eigentlich sehr einfach.
Deine Webanwendung finde ich super wäre schön wenn das bei den Abfallunternehmen implementiert werden könnte.
Danke! ICS-Daten gibt es bei uns auch – dann werde ich die wohl ebenfalls editieren :)
Danke auch für den Artikel, habs in den letzten Jahren vor dem Import in den CalDav Kalender über das Nextcloud WebUi auch immer händisch reingefummelt.
Das VIM-Command sah mir aber so aus, als wäre es einfach Copy-Paste übernehm- und mit sed ausführbar
sed -i.bak 's/END:VEVENT/BEGIN:VALARM\rTRIGGER:-PT9H\rACTION:DISPLAY\rEND:VALARM\rEND:VEVENT/g' Abfuhrtermine_Stand_20211223.ICS
Kurioserweise klappt das aber nur, wenn ich die Änderungen direkt mit -i in der Quelldatei übernehme. Wenn ich mir das zuerst in stdout ansehen möchte, dann klappt es nicht. Es kommt dann das hier raus:
URL:http://www.muellmax.de END:VEVENTPLAY END:VCALENDAR
Falls da jemand sachdienliche Hinweise hat, freue ich mich über eine Rückmeldung, eMail Benachrichtigung für Kommentare ist aktiviert :)