mirror of
https://github.com/aculix/ticket-monitoring.git
synced 2026-10-27 07:15:51 +00:00
BookMyShow blocks datacenter IPs on top of TLS fingerprinting, confirmed by CI runners getting 403 with a working impersonation, so cloud hosts need the proxy for BMS as well as District. impit resolves DNS locally for socks5:// and hands an IPv6-only exit an unreachable IPv4 address, so the scheme is normalized to socks5h://. Verified end to end: a proxied BMS check returns 200 and alerts. Docs said the proxy did nothing for BookMyShow, which was wrong.
68 lines
4.6 KiB
Bash
68 lines
4.6 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_MOVIE_CODE 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_MOVIE_CODE=y7EZNLXN5Y # ?frmtid= — identifies movie + language
|
|
DISTRICT_CONTENT_ID=187151 # digits after MV
|
|
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
|