ROM metadata search, discovery, and scraping engine with full-text search, legal compliance, download queue management, and automated scraper scheduling.
The ROM Discovery plugin provides a searchable ROM metadata database populated by automated scrapers. It includes full-text search with PostgreSQL tsvector, quality and popularity scoring, legal compliance with DMCA-aware disclaimer and acceptance workflows, an auditable download queue, and CSV audit log export.
Queue a download (requires legal acceptance, returns HTTP 451 if not accepted)
GET
/api/roms/download/:id/status
Check download status
GET
/api/roms/download/queue
List download queue
Scrapers
Method
Path
Description
GET
/api/roms/scrapers
List all scrapers
POST
/api/roms/scrapers/:name/run
Manually trigger a scraper
Scoring
Method
Path
Description
POST
/api/roms/scoring/quality
Update quality scores
POST
/api/roms/scoring/popularity
Update popularity scores
Audit
Method
Path
Description
GET
/api/audit
View audit log entries
GET
/api/audit/export
Export audit log as CSV
Stats and Health
Method
Path
Description
GET
/api/stats
ROM Discovery statistics
GET
/health
Health check
GET
/ready
Readiness check
Database Schema
np_romdisc_metadata
Full-text search enabled with tsvector trigger.
Column
Type
Description
id
UUID
Primary key
source_account_id
VARCHAR(128)
Multi-app isolation
rom_title
VARCHAR(512)
ROM title
platform
VARCHAR(64)
Platform (nes, snes, gba, etc.)
region
VARCHAR(32)
Region (USA, Europe, Japan)
language
VARCHAR(32)
Language
developer
VARCHAR(255)
Developer
publisher
VARCHAR(255)
Publisher
release_year
INTEGER
Release year
genre
VARCHAR(64)
Genre
description
TEXT
Game description
file_name
VARCHAR(512)
ROM file name
file_size_bytes
BIGINT
File size
file_hash_md5
VARCHAR(32)
MD5 hash
file_hash_sha1
VARCHAR(40)
SHA1 hash
file_hash_crc32
VARCHAR(8)
CRC32 hash
download_url
TEXT
Download URL
cover_url
TEXT
Cover art URL
screenshots
JSONB
Screenshot URLs
quality_score
INTEGER
Quality score (0-100)
popularity_score
INTEGER
Popularity score
is_verified_dump
BOOLEAN
Verified dump flag
is_homebrew
BOOLEAN
Homebrew flag
is_hack
BOOLEAN
ROM hack flag
is_translation
BOOLEAN
Translation flag
release_group
VARCHAR(128)
Release group name
source_scraper
VARCHAR(128)
Scraper that found it
source_url
TEXT
Original source URL
search_vector
TSVECTOR
Full-text search vector (auto-updated by trigger)
metadata
JSONB
Additional metadata
created_at
TIMESTAMPTZ
First discovered
updated_at
TIMESTAMPTZ
Last updated
Indexes: GIN index on search_vector, trigram index on rom_title for similarity search, indexes on platform, region, quality_score, popularity_score, is_verified_dump, is_homebrew.