mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-17 22:32:31 -05:00
feat: add native_id to scraper output
This commit is contained in:
@@ -22,6 +22,7 @@ class BiosRequirement:
|
|||||||
destination: str = ""
|
destination: str = ""
|
||||||
required: bool = True
|
required: bool = True
|
||||||
zipped_file: str | None = None # If set, md5 is for this ROM inside the ZIP
|
zipped_file: str | None = None # If set, md5 is for this ROM inside the ZIP
|
||||||
|
native_id: str | None = None # Original system name before normalization
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -199,7 +200,11 @@ def scraper_cli(scraper_class: type, description: str = "Scrape BIOS requirement
|
|||||||
config = {"systems": {}}
|
config = {"systems": {}}
|
||||||
for req in reqs:
|
for req in reqs:
|
||||||
sys_id = req.system
|
sys_id = req.system
|
||||||
config["systems"].setdefault(sys_id, {"files": []})
|
if sys_id not in config["systems"]:
|
||||||
|
sys_entry: dict = {"files": []}
|
||||||
|
if req.native_id:
|
||||||
|
sys_entry["native_id"] = req.native_id
|
||||||
|
config["systems"][sys_id] = sys_entry
|
||||||
entry = {"name": req.name, "destination": req.destination or req.name, "required": req.required}
|
entry = {"name": req.name, "destination": req.destination or req.name, "required": req.required}
|
||||||
if req.sha1:
|
if req.sha1:
|
||||||
entry["sha1"] = req.sha1
|
entry["sha1"] = req.sha1
|
||||||
|
|||||||
@@ -265,6 +265,7 @@ class Scraper(BaseScraper):
|
|||||||
destination=file_path,
|
destination=file_path,
|
||||||
required=True,
|
required=True,
|
||||||
zipped_file=zipped_file or None,
|
zipped_file=zipped_file or None,
|
||||||
|
native_id=sys_key,
|
||||||
))
|
))
|
||||||
|
|
||||||
return requirements
|
return requirements
|
||||||
@@ -284,7 +285,10 @@ class Scraper(BaseScraper):
|
|||||||
systems = {}
|
systems = {}
|
||||||
for req in requirements:
|
for req in requirements:
|
||||||
if req.system not in systems:
|
if req.system not in systems:
|
||||||
systems[req.system] = {"files": []}
|
sys_entry: dict = {"files": []}
|
||||||
|
if req.native_id:
|
||||||
|
sys_entry["native_id"] = req.native_id
|
||||||
|
systems[req.system] = sys_entry
|
||||||
|
|
||||||
entry = {
|
entry = {
|
||||||
"name": req.name,
|
"name": req.name,
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ class Scraper(BaseScraper):
|
|||||||
requirements = []
|
requirements = []
|
||||||
|
|
||||||
for rom in roms:
|
for rom in roms:
|
||||||
system_slug = SYSTEM_SLUG_MAP.get(rom.system, rom.system.lower().replace(" ", "-"))
|
native_system = rom.system
|
||||||
|
system_slug = SYSTEM_SLUG_MAP.get(native_system, native_system.lower().replace(" ", "-"))
|
||||||
|
|
||||||
destination = rom.name
|
destination = rom.name
|
||||||
name = rom.name.split("/")[-1] if "/" in rom.name else rom.name
|
name = rom.name.split("/")[-1] if "/" in rom.name else rom.name
|
||||||
@@ -130,6 +131,7 @@ class Scraper(BaseScraper):
|
|||||||
size=rom.size or None,
|
size=rom.size or None,
|
||||||
destination=destination,
|
destination=destination,
|
||||||
required=True,
|
required=True,
|
||||||
|
native_id=native_system,
|
||||||
))
|
))
|
||||||
|
|
||||||
return requirements
|
return requirements
|
||||||
@@ -223,7 +225,9 @@ class Scraper(BaseScraper):
|
|||||||
systems = {}
|
systems = {}
|
||||||
for req in requirements:
|
for req in requirements:
|
||||||
if req.system not in systems:
|
if req.system not in systems:
|
||||||
system_entry = {"files": []}
|
system_entry: dict = {"files": []}
|
||||||
|
if req.native_id:
|
||||||
|
system_entry["native_id"] = req.native_id
|
||||||
if req.system in core_meta:
|
if req.system in core_meta:
|
||||||
cm = core_meta[req.system]
|
cm = core_meta[req.system]
|
||||||
if cm.get("core"):
|
if cm.get("core"):
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ class Scraper(BaseScraper):
|
|||||||
md5=all_md5,
|
md5=all_md5,
|
||||||
destination=primary_path,
|
destination=primary_path,
|
||||||
required=mandatory,
|
required=mandatory,
|
||||||
|
native_id=platform,
|
||||||
))
|
))
|
||||||
|
|
||||||
return requirements
|
return requirements
|
||||||
@@ -203,7 +204,10 @@ class Scraper(BaseScraper):
|
|||||||
systems = {}
|
systems = {}
|
||||||
for req in requirements:
|
for req in requirements:
|
||||||
if req.system not in systems:
|
if req.system not in systems:
|
||||||
systems[req.system] = {"files": []}
|
sys_entry: dict = {"files": []}
|
||||||
|
if req.native_id:
|
||||||
|
sys_entry["native_id"] = req.native_id
|
||||||
|
systems[req.system] = sys_entry
|
||||||
|
|
||||||
entry = {
|
entry = {
|
||||||
"name": req.name,
|
"name": req.name,
|
||||||
|
|||||||
@@ -3013,5 +3013,40 @@ class TestE2E(unittest.TestCase):
|
|||||||
self.assertEqual(hm["scraped_md5"], "scraped_hash")
|
self.assertEqual(hm["scraped_md5"], "scraped_hash")
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# native_id preservation
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
|
||||||
|
def test_native_id_preserved_in_platform_config(self):
|
||||||
|
"""load_platform_config preserves native_id at the system level."""
|
||||||
|
config = {
|
||||||
|
"platform": "TestNativeId",
|
||||||
|
"verification_mode": "existence",
|
||||||
|
"base_destination": "system",
|
||||||
|
"systems": {
|
||||||
|
"sony-playstation": {
|
||||||
|
"native_id": "Sony - PlayStation",
|
||||||
|
"files": [
|
||||||
|
{"name": "scph5501.bin", "destination": "scph5501.bin", "required": True},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"nintendo-snes": {
|
||||||
|
"native_id": "snes",
|
||||||
|
"files": [
|
||||||
|
{"name": "bs-x.bin", "destination": "bs-x.bin", "required": False},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
with open(os.path.join(self.platforms_dir, "test_native_id.yml"), "w") as fh:
|
||||||
|
yaml.dump(config, fh)
|
||||||
|
|
||||||
|
loaded = load_platform_config("test_native_id", self.platforms_dir)
|
||||||
|
psx = loaded["systems"]["sony-playstation"]
|
||||||
|
self.assertEqual(psx["native_id"], "Sony - PlayStation")
|
||||||
|
snes = loaded["systems"]["nintendo-snes"]
|
||||||
|
self.assertEqual(snes["native_id"], "snes")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user