All projects

ode-to-myrient

Playwright-based ROM downloader with parallel workers and adaptive throttling.

Automated tool for bulk-downloading retro game ROMs from Myrient using headless Chromium, designed for autonomous operation with Claude Code managing the download sessions.

Tech Stack

Node.js Playwright Chrome DevTools Protocol Discord Webhooks

Why I Built This

Preserving retro game libraries requires downloading thousands of files from web archives. Manual downloading is impractical, and simple wget/curl scripts get blocked. This tool handles the complexity of rate limiting, resumption, and verification.

Features

  • Playwright-driven downloads bypassing Cloudflare JA3 fingerprinting
  • Parallel worker architecture (2-4 concurrent downloads)
  • Adaptive throttling on HTTP 429/503 and slow speeds
  • Fully resumable with download logging (skip completed files)
  • ZIP verification with magic bytes and file size checks
  • Discord monitoring with progress updates and stall detection

Architecture

Each worker runs an isolated Chromium page via Playwright, intercepting download events through Chrome DevTools Protocol. A central coordinator manages the work queue, tracks progress, and adjusts concurrency based on server response. Download state is persisted to JSON for full resumability.

Key Decisions

Playwright over wget/curl

Cloudflare's JA3 fingerprinting blocks common HTTP clients. A real browser with Playwright passes all checks without custom TLS configuration.

CDP for download interception

Playwright's built-in download API doesn't support progress tracking or parallel downloads well. Chrome DevTools Protocol gives fine-grained control over download events.

Built for Claude Code management

The tool is designed to be operated by Claude Code in autonomous mode, with Discord webhooks providing monitoring without requiring a human to watch the terminal.