Skip to content

feat(playmatch): add SteamGridDB, ScreenScraper, MobyGames & Launchbox hash support#3381

Merged
gantoine merged 5 commits into
rommapp:masterfrom
DevYukine:feat/playmatch-multi-provider
May 16, 2026
Merged

feat(playmatch): add SteamGridDB, ScreenScraper, MobyGames & Launchbox hash support#3381
gantoine merged 5 commits into
rommapp:masterfrom
DevYukine:feat/playmatch-multi-provider

Conversation

@DevYukine
Copy link
Copy Markdown
Contributor

@DevYukine DevYukine commented May 16, 2026

Description
Explain the changes or enhancements you are proposing with this pull request.

Playmatch recently expanded its supported MetadataProvider to IGDB, SteamGridDB, ScreenScraper, MobyGames, LaunchBox, EmuReady, OpenVGDB. This PR removes theIGDB gate and forwards every provider id Playmatch returns into the matching fetch function, the same way igdb_id was already used.

When PLAYMATCH_API_ENABLED=true and at least one Playmatch-supported source (IGDB, MobyGames, ScreenScraper, LaunchBox, SteamGridDB) is enabled, the scan handler now runs Playmatch on hash and uses each returned id as a direct lookup hint for the corresponding metadata source. No platform-level external id is required, since Playmatch matches by file hash.

Disclosure
I am not a Python developer and am not very familiar with the RomM codebase. I used Claude to analyze the existing Playmatch integration and to help write the extension of playmatch to other metadata providers. I reviewed the result before submitting.

Checklist
Please check all that apply.

  • I've tested the changes locally
  • I've updated relevant comments
  • I've assigned reviewers for this PR
  • I've added unit tests that cover the changes

Screenshots (if applicable)

DevYukine and others added 5 commits May 16, 2026 05:17
…tags

Replace the tuple+derived-dict pair with PLAYMATCH_TAG_TO_ATTR as the
canonical mapping. Rename enum members to UPPER_CASE, expand
PlaymatchRomMatch to cover all provider ids, and inline the fallback
match in place of the _empty_playmatch_rom_match helper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Expands Playmatch integration so that hash-based matching can feed direct ID lookups into IGDB, MobyGames, ScreenScraper, LaunchBox, and SteamGridDB metadata fetchers — not just IGDB. The gate that required MetadataSource.IGDB + platform.igdb_id to even invoke Playmatch is replaced with a broader check that any supported source is enabled, and the parser now ingests every provider ID Playmatch returns.

Changes:

  • Generalize the Playmatch response model (PlaymatchRomMatch) and parsing loop to capture all provider IDs via a new PLAYMATCH_TAG_TO_ATTR mapping; rename GameMatchType enum members to follow UPPER_SNAKE_CASE.
  • Loosen fetch_playmatch_hash_match gating to any Playmatch-supported source (PLAYMATCH_SUPPORTED_SOURCES) and always run on UPDATE/UNMATCHED scans.
  • Plumb the Playmatch match into fetch_moby_rom, fetch_ss_rom, fetch_launchbox_rom, and fetch_sgdb_details, using the returned IDs as get_rom_by_id shortcuts when present.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
backend/handler/metadata/playmatch_handler.py Broadens provider mapping, refactors lookup_rom to populate all known provider IDs, normalizes enum casing, and updates manual-match/submission helpers to iterate the new mapping.
backend/handler/scan_handler.py Replaces IGDB-only Playmatch gate with a multi-source check, passes the Playmatch result into Moby/SS/Launchbox/SGDB fetchers, and uses returned IDs as direct lookup hints.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@gantoine gantoine merged commit 9bafd11 into rommapp:master May 16, 2026
5 checks passed
@DevYukine DevYukine deleted the feat/playmatch-multi-provider branch May 16, 2026 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants