fix: emudeck scraper outputs cores field, base_scraper uses generate_platform_yaml

This commit is contained in:
Abdessamad Derraz
2026-03-27 12:27:51 +01:00
parent 106130ca52
commit 8f1c7e47de
3 changed files with 222 additions and 142 deletions

View File

@@ -393,6 +393,8 @@ class Scraper(BaseScraper):
except (ConnectionError, ValueError, OSError):
pass
cores = self._fetch_installed_emulators()
return {
"platform": "EmuDeck",
"version": version or "",
@@ -401,9 +403,54 @@ class Scraper(BaseScraper):
"base_destination": "bios",
"hash_type": "md5",
"verification_mode": "md5",
"cores": cores,
"systems": systems,
}
def _fetch_installed_emulators(self) -> list[str]:
"""Fetch the list of emulators installed by EmuDeck from EmuScripts.
Returns core names normalized to match emulator profile keys.
"""
import json
api_url = (
"https://api.github.com/repos/dragoonDorise/EmuDeck/"
"contents/functions/EmuScripts"
)
name_overrides = {
"pcsx2qt": "pcsx2", "rpcs3legacy": "rpcs3",
"cemuproton": "cemu", "rmg": "mupen64plus_next",
}
skip = {"retroarch_maincfg", "retroarch"}
try:
req = urllib.request.Request(
api_url, headers={"User-Agent": "retrobios-scraper/1.0"},
)
data = json.loads(urllib.request.urlopen(req, timeout=30).read())
except (urllib.error.URLError, OSError):
return []
cores: list[str] = []
seen: set[str] = set()
for entry in data:
name = entry.get("name", "")
if not name.endswith(".sh"):
continue
name = re.sub(r"\.sh$", "", name)
name = re.sub(r"^emuDeck", "", name, flags=re.IGNORECASE)
if not name:
continue
key = name.lower()
if key in skip:
continue
core = name_overrides.get(key, key)
if core not in seen:
seen.add(core)
cores.append(core)
return sorted(cores)
def main():
from scripts.scraper.base_scraper import scraper_cli