mirror of
https://github.com/aculix/ticket-monitoring.git
synced 2026-10-27 15:25:53 +00:00
A leftover v1 MOVIE_CODE used to switch the whole District block to the old names, silently discarding DISTRICT_CONTENT_ID even when it was set deliberately. The monitor then watched the wrong film and still reported 'closed', which is the failure mode this project exists to avoid. Each field now prefers the DISTRICT_* value and falls back to its v1 name, an explicitly emptied value is respected, and any v1 name still in use is warned about at startup. District is enabled by DISTRICT_CONTENT_ID rather than the movie code, which is optional: District answers without it, and a film with no showtimes yet has none.
70 lines
4.9 KiB
Bash
70 lines
4.9 KiB
Bash
# Copy to .env and fill in. Every value is read from the environment, so you can set
|
|
# these directly (Docker, systemd, CI) instead of using a file.
|
|
#
|
|
# Configure District, BookMyShow, or both. Both are watched in one process, each with
|
|
# its own dedupe and failure tracking, so one site breaking never silences the other.
|
|
|
|
# ── Shared ────────────────────────────────────────────────────────────────────
|
|
TARGET_DATE=2026-09-25 # the date you are waiting for (YYYY-MM-DD)
|
|
FORMAT_LABEL=IMAX # cosmetic: how the format is named in alerts
|
|
|
|
# Subscribe to this topic in the ntfy app. Treat it as a password: anyone who knows
|
|
# it can read your alerts and publish to you. Use a long random string.
|
|
NTFY_TOPIC=change-me-to-something-random
|
|
|
|
# Public ntfy.sh works from home connections. It rate-limits shared cloud egress
|
|
# IPs with HTTP 429, so point this at your own server when hosting in the cloud.
|
|
NTFY_URL=https://ntfy.sh
|
|
# NTFY_TOKEN=tk_... # only if your server (or topic) requires auth
|
|
|
|
# ── District (district.in) ────────────────────────────────────────────────────
|
|
# Leave DISTRICT_CONTENT_ID unset to skip District entirely.
|
|
# Read these off the movie's page URL, e.g.
|
|
# district.in/movies/the-odyssey-movie-tickets-in-ahmedabad-MV187151?frmtid=y7EZNLXN5Y
|
|
DISTRICT_CONTENT_ID=187151 # digits after MV; this is what enables District
|
|
DISTRICT_MOVIE_CODE=y7EZNLXN5Y # optional ?frmtid=, pins one language/format variant.
|
|
# Leave empty for a film with no showtimes yet, since
|
|
# District only publishes the code once shows exist.
|
|
DISTRICT_CITY_KEY=ahmedabad # city slug in the path
|
|
DISTRICT_LAT=23.033938956712916 # any coordinates in that city; the API needs them
|
|
DISTRICT_LNG=72.57696301365426
|
|
DISTRICT_CINEMA_ID=1032362 # empty = watch every cinema in the city
|
|
DISTRICT_FORMAT_TAG=imax_2d # session tag that counts as a match
|
|
DISTRICT_FORMAT_MATCH=IMAX # or a screen-format substring; both empty = any show
|
|
DISTRICT_BOOKING_URL=https://www.district.in/movies/the-odyssey-movie-tickets-in-ahmedabad-MV187151?frmtid=y7EZNLXN5Y&fromdate=2026-09-25
|
|
|
|
# ── BookMyShow (in.bookmyshow.com) ────────────────────────────────────────────
|
|
# Leave BMS_EVENT_CODE unset to skip BookMyShow entirely.
|
|
# From the movie URL, e.g. in.bookmyshow.com/movies/ahmedabad/avengers-endgame-encore/ET00514163
|
|
BMS_EVENT_CODE=ET00514163 # the ET... code
|
|
# BMS_REF_EVENT_CODE= # only if the URL's refEventCode differs from above
|
|
BMS_REGION_CODE=AHD # BMS region code (AHD, BANG, MUMBAI, NCR ...)
|
|
BMS_REGION_SLUG=ahmedabad # city slug in the path
|
|
BMS_LAT=23.0395677
|
|
BMS_LNG=72.5660045
|
|
BMS_VENUE_CODE=PPAM # empty = watch every cinema in the region
|
|
# BMS_LANGUAGE=hindi # only if you want one language's shows
|
|
BMS_FORMAT_MATCH=IMAX # matched against the screen format; empty = any show
|
|
BMS_BOOKING_URL=https://in.bookmyshow.com/movies/ahmedabad/avengers-endgame-encore/ET00514163
|
|
|
|
# Watch only some of the configured providers. Unset = every provider you configured.
|
|
# PROVIDERS=district,bookmyshow
|
|
|
|
# ── Behaviour ─────────────────────────────────────────────────────────────────
|
|
CHECK_INTERVAL_SECONDS=60 # how often to poll; don't go lower without good reason
|
|
FAILURE_THRESHOLD=6 # consecutive failures before the "monitor broken" alert
|
|
TZ_OFFSET_MINUTES=330 # timezone used for showtimes and dates (330 = IST)
|
|
HEARTBEAT_HOUR=9 # daily "still alive" push at this local hour; -1 disables
|
|
CURRENCY=₹
|
|
# EXPIRY_UTC= # auto: local midnight after TARGET_DATE. Override to extend.
|
|
|
|
# ── Runtime ───────────────────────────────────────────────────────────────────
|
|
STATE_PATH=./state.json # Docker image defaults this to /data/state.json
|
|
PORT=4733 # status endpoint (--loop mode only)
|
|
|
|
# Routes both sites' checks through a SOCKS5 proxy; notifications stay direct.
|
|
# Both District and BookMyShow block datacenter IPs, so a cloud host usually needs this.
|
|
# socks5:// is rewritten to socks5h:// internally, so the proxy resolves DNS. That is
|
|
# required for IPv6-only exits and harmless otherwise.
|
|
# PROXY_URL=socks5://user:pass@proxy.example.net:1080
|