All Projects
Project

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.

01

Tech Stack

Node.js Playwright Chrome DevTools Protocol Discord Webhooks
02

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.

03

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
04

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.

05

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.