aboutsummaryrefslogtreecommitdiff
path: root/src/ics.js
diff options
context:
space:
mode:
authordavidpkj <davidpenkow1@gmail.com>2024-04-23 21:45:37 +0200
committerdavidpkj <davidpenkow1@gmail.com>2024-04-23 21:45:37 +0200
commitc533d2c1d579906924237e41b6d71e1601deecae (patch)
tree667a9c455703672a4bd1ce282cda25d78a33412a /src/ics.js
parentd09f40a732d65c222aefb2c9df4ddad3d0b66ed7 (diff)
mega commit: ics, readme updates, easier usage
Diffstat (limited to 'src/ics.js')
-rw-r--r--src/ics.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/ics.js b/src/ics.js
new file mode 100644
index 0000000..ebf6480
--- /dev/null
+++ b/src/ics.js
@@ -0,0 +1,62 @@
+import * as ics from "ics"
+
+import { prepare } from "./main.js"
+import { c, writeICS } from "./files.js"
+
+const daymap = {
+ "Mo": "MO",
+ "Di": "TU",
+ "Mi": "WE",
+ "Do": "TH",
+ "Fr": "FR",
+}
+
+let start = new Date(c.vorlesungszeit[0])
+let end = new Date(c.vorlesungszeit[1])
+
+function getDateList(date, time) {
+ let year = date.getFullYear() - 0
+ let month = date.getMonth() - 0
+ let day = date.getDate() - 0
+
+ let timelist = time.split(":")
+
+ let hour = timelist[0] - 0
+ let minute = timelist[1] - 0
+
+ return [year, month, day, hour, minute]
+}
+
+function generateICS() {
+ let tage = prepare(true);
+ let veranstaltungen = []
+
+ for (let tag in tage) {
+ for (let eintrag of tage[tag]) {
+ let until = end.toISOString().replace(/-|\.|:/g, "").replace("000000000", "000000");
+ let day = daymap[tag];
+
+ if (!eintrag.name.includes("STYLECLASS")) {
+ veranstaltungen.push({
+ title: eintrag.name,
+ location: eintrag.raum,
+ start: getDateList(start, eintrag.von),
+ end: getDateList(start, eintrag.bis), // yes this is correct
+ recurrenceRule: `FREQ=WEEKLY;INTERVAL=1;BYDAY=${day};UNTIL=${until}`
+ })
+ }
+ }
+
+ start.setDate(start.getDate() + 1);
+ }
+
+ const { error, value } = ics.createEvents(veranstaltungen)
+
+ if (error) {
+ console.log(error)
+ } else {
+ writeICS(value)
+ }
+}
+
+generateICS()