No description
  • TypeScript 99.9%
Find a file
RMS e765447391 chore: update default download path to ROMs_ALL
- Consolidate download cache into ROMs_ALL folder
- Update both cli.ts default and browse.ts fallback
2026-07-30 18:15:45 -06:00
input feat: prefer .rvz format when available in download dropdown 2026-07-24 22:22:26 -06:00
src chore: update default download path to ROMs_ALL 2026-07-30 18:15:45 -06:00
.gitignore chore: add vault/ directory to gitignore 2026-07-25 10:59:54 -06:00
biome.json chore: add Biome for formatting and linting 2026-07-24 22:16:18 -06:00
bun.lock chore(deps): add blessed and catalog browse scripts 2026-07-25 10:59:58 -06:00
commitlint.config.js chore: add lefthook with biome formatting and conventional commit hooks 2026-07-24 22:16:34 -06:00
lefthook.yml fix: configure lefthook glob to only run biome on src/*.{ts,js} 2026-07-24 22:20:24 -06:00
mise.toml chore: add Biome for formatting and linting 2026-07-24 22:16:18 -06:00
package-lock.json chore: add lefthook with biome formatting and conventional commit hooks 2026-07-24 22:16:34 -06:00
package.json feat(cli): add bun download shorthand with progress tracking 2026-07-28 21:19:00 -06:00
PLAN.md docs: update plan to v3 with adblock scan, bare media ref, filename fallback, startup validation 2026-07-24 22:11:50 -06:00
README.md fix: configure lefthook glob to only run biome on src/*.{ts,js} 2026-07-24 22:20:24 -06:00
tsconfig.json feat: implement game downloader CLI per v3 plan 2026-07-24 22:14:40 -06:00

Game Downloader

TypeScript + Playwright CLI for downloading ROMs from vimm.net.

Quick Start

# Install dependencies (uses Bun for speed)
bun install

# Install Playwright browsers
bunx playwright install chromium

# Run with defaults
bun run src/index.ts

# Dry-run to test metadata extraction without downloading
bun run src/index.ts --dry-run

# Custom input and output
bun run src/index.ts -i my-urls.txt -o ~/roms

# Visible browser for debugging anti-adblock issues
bun run src/index.ts --headed

# Verify archives after download (requires p7zip)
bun run src/index.ts --verify

# Be polite — add delay between downloads
bun run src/index.ts --delay-ms 5000

Input File Format

One URL per line. Blank lines and # comments are ignored.

# PlayStation 2
https://vimm.net/vault/9053

# GameCube
https://vimm.net/vault/7271

# Nintendo 64
https://vimm.net/vault/1234

CLI Options

Flag Description Default
-i, --input <path> URL list file input/urls.txt
-o, --output-dir <path> ROM output root /Volumes/Kingston SNVS1000G/Syncthing/AYN Odin 3/roms
-d, --dry-run Extract metadata only false
--headed Visible browser false
--delay-ms <ms> Delay between downloads 0
--verify Test archives with 7z t false
-l, --log-file <path> Log file path logs/download.log

Features

  • Sequential downloads — one at a time to avoid overwhelming the server
  • Parallel dry-run — fast metadata extraction without downloading
  • Partial resume — HTTP range requests to resume interrupted downloads
  • Anti-adblock bypass — automatic detection and bypass of vimm.net's adblock wall
  • File integrity — optional p7zip verification of downloaded archives
  • Real-time progress — shows download size as it grows
  • Rate limiting — configurable delay between downloads

Project Structure

game-downloader/
├── src/
│   ├── index.ts      # Entry point
│   ├── cli.ts        # Argument parsing
│   ├── downloader.ts # Core download logic
│   ├── platforms.ts  # Platform name mapping
│   └── types.ts      # TypeScript interfaces
├── input/
│   └── urls.txt      # Default URL list
├── logs/
│   └── download.log  # Execution logs
└── PLAN.md           # Implementation plan