Each event has a link to SplatNet 3, redirected through https://splatoon3.ink/nso/f/.... I updated the nginx configuration but I don't know if anything else needs to be updated to support this.
Images for each Splatfest are embedded in the generated calendar. This is done manually after generating the calendar because the library I used only supports adding attachment links. The macOS Calendar app just shows this as an attachment, possibly some calendar apps could show these in the event descriptions but this could be removed to reduce the calendar size.
This adds generated Splatfest calendars for each region, based on splatoon2.ink's calendars (https://github.com/misenhower/splatoon2.ink/issues/14).
I also added support for running the data updaters without tokens for all regions to test this. (https://github.com/misenhower/splatoon3.ink/commit/0e4812079f4c1c507cc274fb1f08a9d9f3ae5174)
Example generated calendar: https://gist.github.com/samuelthomas2774/a7fd73ca923ef5c1fb070bdc610bf50e.