mirror of
https://github.com/rommapp/romm.git
synced 2026-07-01 08:16:21 +00:00
Adds the libretro thumbnail repository as a first-class artwork source so region-correct box art (PAL/Europe, Japan, etc.) can be matched directly to ROM filenames, addressing rommapp/romm#3239. Implementation follows the SGDB handler pattern (artwork-only, no game metadata): MetadataSource enum entry, scan-time fetch wired into the SCAN_ARTWORK_PRIORITY loop, /search/roms integration, MatchRom dialog chip + cover selection, and a heartbeat flag. Matching is exact case-insensitive against the directory listing first (so a ROM named "(Europe)" lands on the (Europe) artwork), with a JaroWinkler fuzzy fallback at 0.8 that strips parenthetical tags from both sides. Listings are cached in Redis with a 24h TTL. `libretro_id` is persisted on the Rom model as the SHA1 hex of the matched libretro filename — stable across scans, distinct per region, indexed for lookup. Migration 0077 adds the column. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 lines
804 B
Python
33 lines
804 B
Python
from handler.metadata.sgdb_handler import SGDBResource
|
|
|
|
from .base import BaseModel
|
|
|
|
|
|
class SearchRomSchema(BaseModel):
|
|
id: int | None = None
|
|
igdb_id: int | None = None
|
|
moby_id: int | None = None
|
|
ss_id: int | None = None
|
|
sgdb_id: int | None = None
|
|
flashpoint_id: str | None = None
|
|
launchbox_id: int | None = None
|
|
libretro_id: str | None = None
|
|
platform_id: int
|
|
name: str
|
|
slug: str = ""
|
|
summary: str = ""
|
|
igdb_url_cover: str = ""
|
|
moby_url_cover: str = ""
|
|
ss_url_cover: str = ""
|
|
sgdb_url_cover: str = ""
|
|
flashpoint_url_cover: str = ""
|
|
launchbox_url_cover: str = ""
|
|
libretro_url_cover: str = ""
|
|
is_unidentified: bool
|
|
is_identified: bool
|
|
|
|
|
|
class SearchCoverSchema(BaseModel):
|
|
name: str
|
|
resources: list[SGDBResource]
|