mirror of
https://github.com/aculix/ticket-monitoring.git
synced 2026-10-27 07:15:51 +00:00
Initial commit
Watches district.in showtimes and sends a max-priority phone notification the moment tickets for a given movie, date, format and cinema go on sale.
This commit is contained in:
commit
b70968d259
15 files changed
+1164
No files matched your search
@@ -0,0 +1,52 @@
|
||||
# Copy to .env and fill in. Every value below is read from the environment,
|
||||
# so you can also set them directly (Docker, systemd, CI) instead of using a file.
|
||||
# The example values watch IMAX shows of one film at one Ahmedabad cinema.
|
||||
|
||||
# ── What to watch ─────────────────────────────────────────────────────────────
|
||||
# Open the film's page on district.in, then read these off the network request to
|
||||
# /gw/consumer/movies/v5/movie (see "Finding your IDs" in the README).
|
||||
MOVIE_CODE=y7EZNLXN5Y # ?frmtid= in the page URL — identifies movie + language
|
||||
CONTENT_ID=187151 # MV<number> in the page URL
|
||||
CITY_KEY=ahmedabad # city slug as it appears in the page URL
|
||||
LAT=23.033938956712916 # city coordinates; the API rejects requests without them
|
||||
LNG=72.57696301365426
|
||||
TARGET_DATE=2026-08-10 # the date you are waiting for (YYYY-MM-DD)
|
||||
|
||||
# Restrict to one cinema. Leave empty to watch every cinema in the city.
|
||||
CINEMA_ID=1032362
|
||||
|
||||
# Which shows count as a match. A session matches if it carries FORMAT_TAG *or* if its
|
||||
# screen format contains FORMAT_MATCH (case-insensitive), so "IMAX" also catches
|
||||
# "IMAX 3D". Set BOTH to empty to match every show regardless of format.
|
||||
FORMAT_TAG=imax_2d
|
||||
FORMAT_MATCH=IMAX
|
||||
FORMAT_LABEL=IMAX # cosmetic: how the format is named in alerts
|
||||
|
||||
# Opened when you tap the notification.
|
||||
BOOKING_URL=https://www.district.in/movies/the-odyssey-movie-tickets-in-ahmedabad-MV187151?frmtid=y7EZNLXN5Y&fromdate=2026-08-10
|
||||
|
||||
# ── Notifications (ntfy) ──────────────────────────────────────────────────────
|
||||
# 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
|
||||
|
||||
# ── 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 # showtimes are rendered in this offset (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=8080 # status endpoint (--loop mode only)
|
||||
|
||||
# Routes only the site checks through a SOCKS5 proxy; notifications stay direct.
|
||||
# Needed on datacenter hosts, whose IPs the site's WAF is likely to block.
|
||||
# PROXY_URL=socks5://user:pass@proxy.example.net:1080
|
||||
Reference in new issue
Block a user