From b4d9b7ce73f04657ff8a87fb3c1736e6cbd739dd Mon Sep 17 00:00:00 2001 From: olen Date: Tue, 28 Apr 2026 11:56:39 +0200 Subject: [PATCH 1/2] feat(ical): use meetupTimestamp as event start when available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Match events expose a `meetupTimestamp` ("oppmøtetid" in Norwegian) that sits before `startTimestamp` (kickoff). Calendar subscribers care about when to show up, not just when the match starts, so prefer the meet-up time as the ICS event begin and fall back to startTimestamp when no meet-up is set (e.g. training events). --- examples/ical.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ical.py b/examples/ical.py index e019a51..99300a5 100644 --- a/examples/ical.py +++ b/examples/ical.py @@ -23,7 +23,7 @@ async def main() -> None: e = Event() e.uid = event["id"] e.name = event["heading"] - e.begin = event["startTimestamp"] + e.begin = event.get("meetupTimestamp", event["startTimestamp"]) e.end = event["endTimestamp"] e.sequence = event["updated"] e.description = event.get("description") From 0ae26e32eecd01c4a141a4323355e454ff358b11 Mon Sep 17 00:00:00 2001 From: olen Date: Tue, 28 Apr 2026 11:57:21 +0200 Subject: [PATCH 2/2] docs(ical): explain meetupTimestamp vs startTimestamp in example --- examples/ical.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/ical.py b/examples/ical.py index 99300a5..7c85f48 100644 --- a/examples/ical.py +++ b/examples/ical.py @@ -23,6 +23,11 @@ async def main() -> None: e = Event() e.uid = event["id"] e.name = event["heading"] + # Match events expose two start times: `startTimestamp` is the + # kickoff, while `meetupTimestamp` is when participants are expected + # to arrive (Norwegian: "oppmøtetid"). Training events only have + # `startTimestamp`. We prefer the meet-up time so calendar + # subscribers see when to show up, and fall back to kickoff. e.begin = event.get("meetupTimestamp", event["startTimestamp"]) e.end = event["endTimestamp"] e.sequence = event["updated"]