Watches the IMAX date picker on imax.com/movie/the-odyssey and emails you the moment the last available showing date changes.
IMAX's date picker is rendered client-side (React/Next.js), so a plain
fetch of the page doesn't include it. monitor.ts instead fetches the page
through r.jina.ai's free rendering proxy, which executes
the page's JS and returns the rendered text — including the calendar strip
(Jul 28, Jul 29, ... Aug 19, etc.).
Each run:
- Fetches the rendered page and extracts every
Mon Ddate shown in the date-picker block. - Takes the last one — that's the last available showing date.
- Compares it to the value stored in blob storage from the previous run.
- If it changed, emails you (via
std/email, to your Val Town account email) with the old and new dates. Otherwise stays quiet.
The baseline (currently 2026-08-19, matching what's live on the site) is
already recorded, so you'll only get an email once the date actually moves.
Runs every 5 minutes. Change the cadence any time via the interval settings.
If fetching/parsing the page fails, you'll also get an email when either:
- 3 errors happen in a row, or
- 5 errors happen within any rolling 1-hour window
Each of those is a one-time alert per breach (it won't email you again for
the same streak/window) — it re-arms once a run succeeds again (for the
consecutive counter) or once the error rate drops back under 5/hour (for the
hourly counter). Error state is tracked in blob storage under the
error-state key.
- This relies on IMAX's page structure and on r.jina.ai staying up. Repeated failures will trigger the alert emails above rather than failing silently.
- The date shown has no year attached in the picker itself, so the val infers the year based on today's date (assumes the next occurrence of that month/day, rolling into next year near December/January).