SeatCat is a local-first Tampermonkey userscript that monitors Maoyan showtimes, ranks cinema seats with an explicit strategy, and automates only the steps selected by the user.
SeatCat does not bypass CAPTCHA, authentication, risk controls, or rate limits. It never performs payment. Start with monitor-only mode and verify the detected page and candidates before enabling clicks.
- Maoyan page, showtime, seat-map, and order-confirmation detection
- Movie, cinema, date, time-window, and showtime-text filters
- Strategy-driven 1–6 seat selection with adjacency, row, center, edge, and front-row preferences
- Four automation levels from notifications only to opening the order-confirmation page
- Draggable and collapsible Shadow DOM panel with logs, settings, and debug data
- Versioned GM storage, desktop notifications, menu commands, and refresh recovery
- Tab-local task state that survives refreshes without coordinating unrelated tabs
- Mutation-driven scanning with a low-frequency fallback and an 8-second minimum refresh interval
- Automatic pause for CAPTCHA or identity verification; automatic stop before payment
The source repository is on GitHub. The first GitHub Release and Greasy Fork listing have not been published yet.
For local installation, open dist/seatcat.user.js, copy it into a new Tampermonkey script, and save it. Once releases are published, use either the Greasy Fork listing or the seatcat.user.js asset from GitHub Releases. Each channel maintains its own updates; see Releasing.
- Open a page under
https://www.maoyan.com/. - Configure the target showtime, seat count, and seat preferences.
- Keep the default Monitor and notify only level for the first run.
- Enable Debug Mode and verify page detection, selector hits, and rankings.
- Increase the automation level only after the detected result is correct.
- Review the complete order and pay manually on the order-confirmation page.
An active task resumes after a refresh. Stop, reaching order confirmation, or the userscript menu can end it.
- Row specifications accept values such as
5-8,10. - Center offset uses
0for the exact center and100for the hall edge. - Disabling “multiple candidates” pauses automatic entry when more than one showtime matches.
- “Suboptimal seats” can relax row and center preferences, but never overrides disabled edge or front-row seating.
- Refreshes use the configured 8–300 second interval with ±10% jitter.
| Platform | Status |
|---|---|
| Maoyan Web | Phase-one adapter with a sanitized fixture; authenticated live-page validation is pending |
| Chrome / Edge + Tampermonkey | Primary target; release-manager acceptance test still required |
| Firefox / Violentmonkey | Compatible APIs are used, currently experimental |
| Taopiaopiao | Not implemented |
Node.js 22.13 or later is required.
npm install
npm run devSee Architecture and Selector maintenance.
npm run checkThe readable, non-minified install artifact is generated at dist/seatcat.user.js; dist/seatcat.meta.js is the lightweight GitHub update manifest. Release metadata URLs are injected only by the tag workflow using the real repository name.
SeatCat has no telemetry, ads, referral links, or author-operated network service. Configuration remains in userscript-manager storage, and runtime logs remain in the current page. See PRIVACY.md.
SeatCat is a personal browsing assistant and does not guarantee availability or purchase success. Users are responsible for complying with platform terms and local rules and for reviewing every order. CAPTCHA, identity checks, and payment always require the user.
- Validate selectors against sanitized authenticated Maoyan snapshots
- Verify real Tampermonkey and Violentmonkey upgrade paths
- Add multi-cinema and multi-showtime fallback tasks
- Add a second ticket platform only after the adapter contract is stable
Read CONTRIBUTING.md. Use the bug report form for sanitized DOM or selector failures.
