RetroPie / EmulationStation

A Fork of Emulation Station for RetroPie. Emulation Station is a flexible emulator front-end supporting keyboardless navigation and custom system themes.
Other
854 stars 344 forks source link

TGDB Scraper - search doesn't find some Genesis titles #565

Closed cmitu closed 5 years ago

cmitu commented 5 years ago

[Found from a report in https://retropie.org.uk/forum/topic/18435/emulationstation-scraper-not-working/99, logged so it doesn't get lost].

The TGDB scraper misses USA exclusive titles when searching, because TGDB separates the Megadrive and Genesis platforms. The scraper filters the search by the Megadrive system, but the games are only found if the system filter is Genesis.

Examples:

This is easily reproducible with the web site when filtering by platform/system.

Since RetroPie has only 1 system for both Genesis and Megadrive (default being megadrive), searching for these USA exclusives will return nothing.

@acrummyidea - do you know if it's possible to add more than 1 platform when doing an API search ?

rob2d commented 5 years ago

@cmitu Haven't written CPP in many years and not familiar with this code-base but I was browsing through and at file ./es-app/src/scrapers/GamesDBJSONScraper.cpp,

would it be possible to just change the hashmap here in the scraper logic to point to an array of strings instead of a string, then simply call the request for all combinations and return results into the requesting system? e.g. SEGA_GENESIS, ["18", "36"]. vs SEGA_GENESIS, "18"?

cmitu commented 5 years ago

I re-tested this and there's no need to add a workaround - if you add in es_systems.cfg the genesis tag to the <platform> declaration, the search includes multiple platforms. Example:

  <system>
    <name>megadrive</name>
    <fullname>Sega Mega Drive</fullname>
    <path>/home/pi/RetroPie/roms/megadrive</path>
    <extension>.7z .smd .bin .gen .md .sg .zip .7Z .SMD .BIN .GEN .MD .SG .ZIP</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ megadrive %ROM%</command>
    <platform>megadrive,genesis</platform>
    <theme>megadrive</theme>
  </system>

Maybe this should be added to the es_systems.cfg shipped with https://github.com/RetroPie/RetroPie-Setup/blob/master/platforms.cfg.

EDIT: this modification, however, impacts the ScreenScraper's scraper - which returns duplicates for a single search.

cmitu commented 5 years ago

I'm going to close this since the issue can be solved with a proper es_systems.cfg. What needs to be solved is the ScreenScraper code to eliminate the duplicate requests when multiple platform entries are generating duplicate requests. I'll have a PR for that.