fix: resolve truncated md5 in batocera scraper

Batocera upstream has a truncated 29-char MD5 for zx48.rom.
The scraper now resolves truncated hashes via prefix match
against database.json, preventing schema validation failures.
This commit is contained in:
Abdessamad Derraz
2026-03-19 23:49:58 +01:00
parent 16fd815099
commit 21bc225cac
3 changed files with 325 additions and 254 deletions

View File

@@ -1,7 +1,7 @@
{
"generated_at": "2026-03-19T22:30:37Z",
"total_files": 6676,
"total_size": 5216701134,
"generated_at": "2026-03-19T22:44:35Z",
"total_files": 6679,
"total_size": 5217757902,
"files": {
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
@@ -30522,6 +30522,24 @@
"sha256": "c68f56d7cbcd4b621dd39804aa6bd50950df2946b970f81fd8bd87dae21c0813",
"crc32": "7bad9043"
},
"d961de803c89b3d1902d656ceb9ce7c02dccb40a": {
"path": "bios/Philips/CD-i/cdi200.rom",
"name": "cdi200.rom",
"size": 524288,
"sha1": "d961de803c89b3d1902d656ceb9ce7c02dccb40a",
"md5": "2969341396aa61e0143dc2351aaa6ef6",
"sha256": "24e388c72df21237a89d8d775d41a90208af24c4112c61429b8e47f190ac18c6",
"crc32": "40c4e6b9"
},
"53360a1f21ddac952e95306ced64186a3fc0b93e": {
"path": "bios/Philips/CD-i/cdi220b.rom",
"name": "cdi220b.rom",
"size": 524288,
"sha1": "53360a1f21ddac952e95306ced64186a3fc0b93e",
"md5": "ac0d468be366779c9df633be98da250a",
"sha256": "fd123e66beadaf844cb220a44166ea33f9fd0d64bafb9e6399febff445429db2",
"crc32": "279683ca"
},
"5d0b1b55b0d0958a5c9069c3219d4da5a87a6b93": {
"path": "bios/Philips/CD-i/cdimono1.zip",
"name": "cdimono1.zip",
@@ -30540,6 +30558,15 @@
"sha256": "2302aaeab1f6b74523f43a4d00983b4fea9ff1692a9b27ccf17e6ac7e6e66b32",
"crc32": "4eab5eda"
},
"56d0acd7caad51c7de703247cd6d842b36173079": {
"path": "bios/Philips/CD-i/zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206",
"name": "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206",
"size": 8192,
"sha1": "56d0acd7caad51c7de703247cd6d842b36173079",
"md5": "3d20cf7550f1b723158b42a1fd5bac62",
"sha256": "15794460f2ad630f6dd483a02ef958818c7a5c65f8afe76364bc9ffb7ccad3cc",
"crc32": "688cda63"
},
"a6120aed50831c9c0d95dbdf707820f601d9452e": {
"path": "bios/Philips/Videopac+/c52.bin",
"name": "c52.bin",
@@ -63481,8 +63508,11 @@
"c2fae3ff41cc4f94be0fdaed1523ea99": "858c62e21d3a42d2e70641d001a46ad44e923614",
"4d8f5238df9a374ce3640262773ba885": "e6714b3d5fdc7023348435a77a016b763e0992b1",
"56683e58930b2b554e6594fe04eda238": "e1d30b1d6a23aaaa765102590dc3ffff19c0b09f",
"2969341396aa61e0143dc2351aaa6ef6": "d961de803c89b3d1902d656ceb9ce7c02dccb40a",
"ac0d468be366779c9df633be98da250a": "53360a1f21ddac952e95306ced64186a3fc0b93e",
"c59f92647701428bc453976740eb75cf": "5d0b1b55b0d0958a5c9069c3219d4da5a87a6b93",
"97aa5f47030cd9fdb679d4fafbb0e332": "9492247203b71c12d88fad0a5437376941c7870a",
"3d20cf7550f1b723158b42a1fd5bac62": "56d0acd7caad51c7de703247cd6d842b36173079",
"f1071cdb0b6b10dde94d3bc8a6146387": "a6120aed50831c9c0d95dbdf707820f601d9452e",
"c500ff71236068e0dc0d0603d265ae76": "5130243429b40b01a14e1304d0394b8459a6fbae",
"279008e4a0db2dc5f1c048853b033828": "54b8d2c1317628de51a85fc1c424423a986775e4",
@@ -76155,6 +76185,15 @@
"e1d30b1d6a23aaaa765102590dc3ffff19c0b09f",
"9492247203b71c12d88fad0a5437376941c7870a"
],
"cdi200.rom": [
"d961de803c89b3d1902d656ceb9ce7c02dccb40a"
],
"cdi220b.rom": [
"53360a1f21ddac952e95306ced64186a3fc0b93e"
],
"zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206": [
"56d0acd7caad51c7de703247cd6d842b36173079"
],
"c52.bin": [
"a6120aed50831c9c0d95dbdf707820f601d9452e"
],
@@ -86928,195 +86967,6 @@
"SCPH-70004_BIOS_V12_EUR_200.ROM2": [
"1bae895fbdd658cfb56c53cc2139282cc1e778de"
],
"tos100uk.img": [
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2"
],
"tos106de.img": [
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd"
],
"tos206us.img": [
"ee58768bdfc602c9b14942ce5481e97dd24e7c83"
],
"saturn_bios.bin": [
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
],
"sega-saturn:af5828fdff51384f99b3c4926be27762": [
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
],
"bios7.bin": [
"24f67bdea115a2c847c8813a262502ee1607b7df"
],
"bios9.bin": [
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
],
"dsi_bios7.bin": [
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547"
],
"dsi_bios9.bin": [
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb"
],
"gb_bios.bin": [
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"sgb_bios.bin": [
"aa2f50a77dfb4823da96ba99309085a3c6278515",
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de"
],
"sgb1.boot.rom": [
"aa2f50a77dfb4823da96ba99309085a3c6278515"
],
"SGB1.sfc": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"SGB1.sfc/program.rom": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"SGB2.sfc": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"SGB2.sfc/program.rom": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"fs-a1gt_kanjifont.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
],
"fs-a1wsx_kanjifont.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
],
"yrw801.rom": [
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
],
"fs-a1wsx_msx2psub.rom": [
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
],
"MSX2PEXT.rom": [
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
],
"fs-a1wsx_kanjibasic.rom": [
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06"
],
"fs-a1wsx_disk.rom": [
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6"
],
"kick37350.A600": [
"02843c4253bbd29aba535b0aa3bd9a85034ecde4"
],
"amiga-os-120.rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"amiga-os-130.rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"amiga-os-204.rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"amiga-os-310-a600.rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"amiga-ext-130-cdtv.rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"amiga-os-130-cdtv-ext.rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"amiga-os-300-a1200.rom": [
"70033828182fffc7ed106e5373a8b89dda76faa5"
],
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom": [
"70033828182fffc7ed106e5373a8b89dda76faa5"
],
"amiga-os-310-a1200.rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"AmigaVision.rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"amiga-os-310-a4000.rom": [
"5fe04842d04a489720f0f4bb0e46948199406f49"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom": [
"5fe04842d04a489720f0f4bb0e46948199406f49"
],
"amiga-os-310-cd32.rom": [
"3525be8887f79b5929e017b42380a79edfee542d"
],
"Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom": [
"3525be8887f79b5929e017b42380a79edfee542d"
],
"amiga-ext-310-cd32.rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"amiga-os-310-cd32-ext.rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"custom0.sf2": [
"286b2e1fb21cc79851da01666db6c0b0e88f25e3"
],
"colecovision.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"coleco.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"boot.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"IPL.bin": [
"80b8744ff5e43585392f55546bd03a673d11ef5f",
"ef9194ab4804aa0aa8540d846caf291b28331165",
"f27c63e5394e2fd1606f70df004c4fc2d6027700",
"a1837968288253ed541f2b11440b68f5a9b33875",
"f3cd0c7c61cbcefa85e7de3aff4cfa50bc508714"
],
"basic11.rom": [
"9451a1a09d8f75944dbd6f91193fc360f1de80ac"
],
"basic21.bin": [
"03bbb386cf530e804363acdfc1d13e64cf28af2e"
],
"exos21.bin": [
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
],
"sony-playstation:239665b1a3dade1b5a52c06338011044": [
"343883a7b555646da8cee54aadd2795b6e7dd070"
],
@@ -87528,6 +87378,12 @@
"sega-mega-cd:baca1df271d7c11fe50087c0358f4eb5": [
"2b125c0545afa089b617f2558e686ea723bdc06e"
],
"sega-saturn:af5828fdff51384f99b3c4926be27762": [
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
],
"saturn_bios.bin": [
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
],
"sega-saturn:85ec9ca47d8f6807718151cbcca8b964": [
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"
],
@@ -87549,27 +87405,188 @@
"sega-saturn:0306c0e408d6682dd2d86324bd4ac661": [
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc"
],
"gexpress.pce": [
"014881a959e045e00f4db8f52955200865d40280"
"tos100uk.img": [
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2"
],
"pcfxbios.bin": [
"1a77fd83e337f906aecab27a1604db064cf10074"
"tos106de.img": [
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd"
],
"sgb2_bios.bin": [
"93407ea10d2f30ab96a314d8eca44fe160aea734",
"f282b3aaf98f8423dab7d77f1aa0192be630f2fb"
"tos206us.img": [
"ee58768bdfc602c9b14942ce5481e97dd24e7c83"
],
"flash.bin": [
"94d44d7f9529ec1642ba3771ed3c5f756d5bc872"
"bios7.bin": [
"24f67bdea115a2c847c8813a262502ee1607b7df"
],
"plus3e-3.rom": [
"65f031caa8148a5493afe42c41f4929deab26b4e"
"bios9.bin": [
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
],
"zx48.rom": [
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
"dsi_bios7.bin": [
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547"
],
"zxs:48.rom": [
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
"dsi_bios9.bin": [
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb"
],
"gb_bios.bin": [
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"sgb_bios.bin": [
"aa2f50a77dfb4823da96ba99309085a3c6278515",
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de"
],
"sgb1.boot.rom": [
"aa2f50a77dfb4823da96ba99309085a3c6278515"
],
"SGB1.sfc": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"SGB1.sfc/program.rom": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"SGB2.sfc": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"SGB2.sfc/program.rom": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"fs-a1gt_kanjifont.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
],
"fs-a1wsx_kanjifont.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
],
"yrw801.rom": [
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
],
"fs-a1wsx_msx2psub.rom": [
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
],
"MSX2PEXT.rom": [
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
],
"fs-a1wsx_kanjibasic.rom": [
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06"
],
"fs-a1wsx_disk.rom": [
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6"
],
"kick37350.A600": [
"02843c4253bbd29aba535b0aa3bd9a85034ecde4"
],
"amiga-os-120.rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom": [
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
],
"amiga-os-130.rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
"amiga-os-204.rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom": [
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
],
"amiga-os-310-a600.rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom": [
"3b7f1493b27e212830f989f26ca76c02049f09ca"
],
"amiga-ext-130-cdtv.rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"amiga-os-130-cdtv-ext.rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom": [
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
],
"amiga-os-300-a1200.rom": [
"70033828182fffc7ed106e5373a8b89dda76faa5"
],
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom": [
"70033828182fffc7ed106e5373a8b89dda76faa5"
],
"amiga-os-310-a1200.rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"AmigaVision.rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom": [
"e21545723fe8374e91342617604f1b3d703094f1"
],
"amiga-os-310-a4000.rom": [
"5fe04842d04a489720f0f4bb0e46948199406f49"
],
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom": [
"5fe04842d04a489720f0f4bb0e46948199406f49"
],
"amiga-os-310-cd32.rom": [
"3525be8887f79b5929e017b42380a79edfee542d"
],
"Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom": [
"3525be8887f79b5929e017b42380a79edfee542d"
],
"amiga-ext-310-cd32.rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"amiga-os-310-cd32-ext.rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom": [
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
],
"custom0.sf2": [
"286b2e1fb21cc79851da01666db6c0b0e88f25e3"
],
"colecovision.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"coleco.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"boot.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"IPL.bin": [
"80b8744ff5e43585392f55546bd03a673d11ef5f",
"ef9194ab4804aa0aa8540d846caf291b28331165",
"f27c63e5394e2fd1606f70df004c4fc2d6027700",
"a1837968288253ed541f2b11440b68f5a9b33875",
"f3cd0c7c61cbcefa85e7de3aff4cfa50bc508714"
],
"basic11.rom": [
"9451a1a09d8f75944dbd6f91193fc360f1de80ac"
],
"basic21.bin": [
"03bbb386cf530e804363acdfc1d13e64cf28af2e"
],
"exos21.bin": [
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
],
"apple2gs1.rom": [
"e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37"
@@ -87592,6 +87609,9 @@
"quasi88/n88knj1.rom": [
"82e11a177af6a5091dd67f50a2f4bafda84d6556"
],
"gexpress.pce": [
"014881a959e045e00f4db8f52955200865d40280"
],
"FMPAC.rom": [
"9d789166e3caf28e4742fe933d962e99618c633d"
],
@@ -87629,6 +87649,31 @@
"d64tano.rom": [
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69"
],
"d64_1.rom": [
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042"
],
"fs-5500_disk.rom": [
"78cd7f847e77fd8cd51a647efb2725ba93f4c471"
],
"pcfxbios.bin": [
"1a77fd83e337f906aecab27a1604db064cf10074"
],
"sgb2_bios.bin": [
"93407ea10d2f30ab96a314d8eca44fe160aea734",
"f282b3aaf98f8423dab7d77f1aa0192be630f2fb"
],
"flash.bin": [
"94d44d7f9529ec1642ba3771ed3c5f756d5bc872"
],
"plus3e-3.rom": [
"65f031caa8148a5493afe42c41f4929deab26b4e"
],
"zx48.rom": [
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
],
"zxs:48.rom": [
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
],
"tms32030.zip": [
"e0f73d2fcee27d9ba6fe248848b2fd411e2e7ee9"
],
@@ -87677,17 +87722,44 @@
"fd502.rom": [
"10bdc5aa2d7d7f205f67b47b19003a4bd89defd1"
],
"d64_1.rom": [
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042"
"amiga-os-300-a4000.rom": [
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
],
"fs-5500_disk.rom": [
"78cd7f847e77fd8cd51a647efb2725ba93f4c471"
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A4000)[!].rom": [
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
],
"FONT.BMP": [
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5"
"monit10.rom": [
"4e83a94ae5155bbea14d7331a5a8db82457bd5ae"
],
"2608_RYM.WAV": [
"c65592330c9dd84011151daed52f9aec926b7e56"
"focal10.rom": [
"6386e58bc1bba5e76baec9e8a1ca4b99dc3c573f"
],
"disk_327.rom": [
"28eefbb63047b26e4aec104aeeca74e2f9d0276c"
],
"b11m_bos.rom": [
"7e9a30e38d7b78981999821640a68a201bb6df01"
],
"b11m_ext.rom": [
"f087af69044432a1ef2431a72ac06946e32f2dd3"
],
"bas11m_0.rom": [
"9d76f3eefd64e032c763fa1ebf9cd3d9bd22317a"
],
"bas11m_1.rom": [
"34fa37599f2f9eb607390ef2458a3c22d87f09a9"
],
"terak.rom": [
"273a9933b68a290c5aedcd6d69faa7b1d22c0344"
],
"upd7801g.bin": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
"upd7801g.bios": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
"BS-X.bios": [
"604556b2e62860af18db5a77f2956ebc75450020"
],
"N88_0.ROM": [
"d1ae642aed4f0584eeb81ff50180db694e5101d4"
@@ -87737,44 +87809,11 @@
"jisyo.rom": [
"deef0cc2a9734ba891a6d6c022aa70ffc66f783e"
],
"BS-X.bios": [
"604556b2e62860af18db5a77f2956ebc75450020"
"FONT.BMP": [
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5"
],
"upd7801g.bin": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
"upd7801g.bios": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
"amiga-os-300-a4000.rom": [
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
],
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A4000)[!].rom": [
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
],
"monit10.rom": [
"4e83a94ae5155bbea14d7331a5a8db82457bd5ae"
],
"focal10.rom": [
"6386e58bc1bba5e76baec9e8a1ca4b99dc3c573f"
],
"disk_327.rom": [
"28eefbb63047b26e4aec104aeeca74e2f9d0276c"
],
"b11m_bos.rom": [
"7e9a30e38d7b78981999821640a68a201bb6df01"
],
"b11m_ext.rom": [
"f087af69044432a1ef2431a72ac06946e32f2dd3"
],
"bas11m_0.rom": [
"9d76f3eefd64e032c763fa1ebf9cd3d9bd22317a"
],
"bas11m_1.rom": [
"34fa37599f2f9eb607390ef2458a3c22d87f09a9"
],
"terak.rom": [
"273a9933b68a290c5aedcd6d69faa7b1d22c0344"
"2608_RYM.WAV": [
"c65592330c9dd84011151daed52f9aec926b7e56"
],
"dmg0_rom.bin": [
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
@@ -91214,8 +91253,11 @@
"25314c62": "858c62e21d3a42d2e70641d001a46ad44e923614",
"59205298": "e6714b3d5fdc7023348435a77a016b763e0992b1",
"7bad9043": "e1d30b1d6a23aaaa765102590dc3ffff19c0b09f",
"40c4e6b9": "d961de803c89b3d1902d656ceb9ce7c02dccb40a",
"279683ca": "53360a1f21ddac952e95306ced64186a3fc0b93e",
"0a67ff2c": "5d0b1b55b0d0958a5c9069c3219d4da5a87a6b93",
"4eab5eda": "9492247203b71c12d88fad0a5437376941c7870a",
"688cda63": "56d0acd7caad51c7de703247cd6d842b36173079",
"a318e8d6": "a6120aed50831c9c0d95dbdf707820f601d9452e",
"e20a9f41": "5130243429b40b01a14e1304d0394b8459a6fbae",
"11647ca5": "54b8d2c1317628de51a85fc1c424423a986775e4",

View File

@@ -3184,7 +3184,7 @@ systems:
- name: zx48.rom
destination: zx48.rom
required: true
md5: 4c42a2f075212361c3117015b107f
md5: 4c42a2f075212361c3117015b107ff68
- name: ep64.zip
destination: ep64.zip
required: true

View File

@@ -9,10 +9,12 @@ Hash: MD5 primary
from __future__ import annotations
import ast
import json
import re
import sys
import urllib.request
import urllib.error
from pathlib import Path
import yaml
@@ -93,6 +95,32 @@ SYSTEM_SLUG_MAP = {
}
_MD5_RE = re.compile(r'^[a-fA-F0-9]+$')
def _load_md5_index() -> dict[str, str]:
"""Load by_md5 index from database.json for prefix resolution."""
db_path = Path(__file__).resolve().parents[2] / "database.json"
if not db_path.exists():
return {}
with open(db_path) as f:
db = json.load(f)
return db.get("indexes", {}).get("by_md5", {})
def _resolve_truncated_md5(md5: str, md5_index: dict[str, str]) -> str:
"""Resolve a truncated MD5 to its full 32-char version via prefix match."""
if not md5 or len(md5) == 32:
return md5
if not _MD5_RE.match(md5):
return md5
matches = [k for k in md5_index if k.startswith(md5)]
if len(matches) == 1:
print(f" fixed truncated md5: {md5} -> {matches[0]}", file=sys.stderr)
return matches[0]
return md5
class Scraper(BaseScraper):
"""Scraper for batocera-systems Python dict."""
@@ -204,6 +232,7 @@ class Scraper(BaseScraper):
systems = self._extract_systems_dict(raw)
requirements = []
md5_index = _load_md5_index()
for sys_key, sys_data in systems.items():
system_slug = SYSTEM_SLUG_MAP.get(sys_key, sys_key)
@@ -211,7 +240,7 @@ class Scraper(BaseScraper):
for bios in bios_files:
file_path = bios.get("file", "")
md5 = bios.get("md5", "")
md5 = _resolve_truncated_md5(bios.get("md5", ""), md5_index)
zipped_file = bios.get("zippedFile", "")
if file_path.startswith("bios/"):