Public
Remixed
Emails when IMAX adds new showtimes for The Odyssey
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

IMAX "The Odyssey" showtime watcher

Watches the IMAX date picker on imax.com/movie/the-odyssey and emails you the moment the last available showing date changes.

How it works

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:

  1. Fetches the rendered page and extracts every Mon D date shown in the date-picker block.
  2. Takes the last one — that's the last available showing date.
  3. Compares it to the value stored in blob storage from the previous run.
  4. 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.

Schedule

Runs every 5 minutes. Change the cadence any time via the interval settings.

Failure alerts

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.

Caveats

  • 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).