A service to discover and expose Across the Tasman torrents
- JavaScript 56.6%
- HTML 43.3%
- Dockerfile 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| docs/superpowers | ||
| public | ||
| server | ||
| test | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Rugby Torrent Browser
Browse rugby competitions, seasons, rounds and torrents from Across the Tasman — with authenticated access via your forum session cookie.
Quick start
1. Set your cookie
cp .env.example .env
# Edit .env and set ATT_COOKIE to your forum session cookie
Your cookie is passed in via the ATT_COOKIE environment variable and is never exposed to the browser — all requests to the forum are made server-side.
To refresh your cookie: open DevTools in your browser → Network tab → visit acrossthetasman.com → click any request → copy the Cookie header value.
2. Build and run
docker compose up --build
Then open http://localhost:3000 in your browser.
3. Update your cookie
When your session expires, update .env and restart:
docker compose restart
Running without Docker (development)
npm install
ATT_COOKIE="your cookie here" npm start
How it works
- Torrent feed: the server reads ATT's site-wide torrent list (
torrents.php) every 15 minutes (configurable, never faster) and stores each torrent indata/torrents.json. A one-off backfill (Settings) pulls older pages at one page per minute. - Parsing: titles are parsed into sport, competition, season, round, teams, quality and video type using editable dictionaries (Dictionaries page). Anything the parser can't read shows on Needs attention.
- Auto-download: after each check, one game torrent per favourite-team match in a followed competition is sent to qBittorrent, preferring your chosen quality.
- Your cookie stays server-side; the browser only talks to the local API.
API endpoints
| Endpoint | Description |
|---|---|
GET /api/events |
Matches built from the index (filters: q, competition, team, scope, videoType, quality, from, to) |
GET /api/events/:id |
One match with all its torrents |
GET /api/torrents |
Parsed torrents (filters: q, sport, quality, from, to, unparsed=1) |
GET/PUT /api/dictionaries |
Parser dictionaries |
PUT /api/overrides/:attachmentId |
Manual field corrections |
PUT /api/fixtures/:eventId |
Set teams for a final whose torrent titles name none |
POST /api/ingest/poll |
Check now (+ auto-download) |
GET /api/ingest/status |
Last check, backfill progress, counts |
POST /api/ingest/backfill |
`{ action: start |
Port
Default is 3000. Change in docker-compose.yml:
ports:
- "8080:3000" # expose on 8080 instead