--- type: project status: active source: git.alwisp.com repo: jason/nyaa-crawler repo_url: https://git.alwisp.com/jason/nyaa-crawler language: TypeScript branch: main tags: [repo, jason] updated: 2026-05-29 --- # nyaa-crawler **Repository:** [jason/nyaa-crawler](https://git.alwisp.com/jason/nyaa-crawler) · branch `main` · TypeScript ## Summary Dockerized Nyaa.si anime torrent crawler — tracks shows, polls RSS for new episodes, and auto-downloads torrent files with a dark-themed web UI and SQLite persistence ## Current status Active. Synced from Gitea on 2026-05-29. ## Documentation overview # nyaa-crawler A dockerized torrent crawler and downloader for [Nyaa.si](https://nyaa.si). Track anime shows, poll for new episodes via RSS, and automatically download `.torrent` files to a host-mounted directory. ## Features - Search Nyaa.si and add shows to a watch list - Automatic polling for new episodes (configurable interval, default 15 min) - Auto-downloads `.torrent` files to a mapped host directory - Track episode status: pending, auto-downloaded, or manually marked - Bulk-mark episodes as already downloaded - Minimal dark-themed web UI - SQLite persistence — easy to back up and migrate - Unraid-friendly Docker container ## Stack - **Backend**: Node.js + TypeScript + Express - **Frontend**: React + Vite - **Database**: SQLite (`better-sqlite3`) - **Scheduler**: `node-cron` - **Nyaa integration**: RSS via `fast-xml-parser` ## Quick Start (Docker) ```bash docker compose up -d ``` Open `http://localhost:8082` in your browser. ## Quick Start (Development) ```bash npm install npm run dev ``` - Client dev server: `http://localhost:5173` (proxies `/api` to `:3000`) - API server: `http://localhost:3000` ## Environment Variables | Variable | Default | Description | |---|---|---| | `PORT` | `3000` | HTTP port | | `POLL_INTERVAL_SECONDS` | `900` | Polling frequency (min 60) | | `TORRENT_OUTPUT_DIR` | `./data/torrents` | Where `.torrent` files are saved | | `DATABASE_PATH` | `./data/db.sqlite` | SQLite database path | ## Unraid Deployment ```yaml services: nyaa-watcher: image: your-registry/nyaa-watcher:latest container_name: nyaa-watcher restart: unless-stopped environment: - PORT=3000 - POLL_INTERVAL_SECONDS=900 - TORRENT_OUTPUT_DIR=/data/torrents - DATABASE_PATH=/data/db.sqlite volumes: …(truncated — see repo) ## Notes - Project file auto-created from repo documentation.