Gemba / skyscraper

Powerful and versatile game data scraper written in Qt and C++.
https://gemba.github.io/skyscraper/
GNU General Public License v3.0
46 stars 14 forks source link

Alternate Platform Names [Feature/Enchancement Request - Duplicate Issue From Original Repo] #6

Closed retrobit closed 9 months ago

retrobit commented 10 months ago

Not a bug, but that was the only issue choice.

Wasn't sure if I should create a new issue here or refer to the previous issue from the original repo.

I added a comment to the existing feature request that I think might be useful.

Thank you!

Gemba commented 10 months ago

Hi there. That's ok to file it as issue atm. I have read the comment you mentioned in the original Skyscraper repo.

It should be solvable by adding to peas/platforms_idmap and es_systems.cfg files as you did (Solution 2 you have been sketching).

Edits in xy_platforms.json are not needed and moreover they will be overwritten with each Skyscraper update, as these files are only a reference for editing the platforms_idmap CSV. If you add -1 to the platfroms_idmap CSV, the aliases from peas are tried to find a match. When a scraping side does provide a dedicated key for the Satellaview, great, otherwise you should check the scraping site (as you did) under which System the ROM in questions is listed. Then use either a matching entry (snes in your case) or if there is no match in the xy_platforms.json use -1 and add the scraping site system name in the aliases in the peas file.

I checked the ES code, and the multiple platform names in a es_systems.cfg in <platform> is only evaluated if you scrape from within ES, thus it is unrelated to Skyscraper.

HTH

retrobit commented 10 months ago

Clarifying the role of the three files and how they relate to each other was very helpful! Also explaining that <platform> is used by ES, but not by Skyscraper.

I feel foolish, not seeing https://gemba.github.io/skyscraper/PLATFORMS/#supported-platforms-and-how-to-add-new-platforms-for-scraping and https://github.com/Gemba/skyscraper#skyscraper-configurable-platforms-enhancement earlier... Though I think the former could use a rewrite to be more clear.

I will add my use case after I have finished and got it working, and then maybe others can follow more easily 😄

retrobit commented 9 months ago

I've documented my use case, end-to-end, so it should be easy for anyone to follow and to learn by doing. Feel free to use as an example for the official documentation under the Supported Platforms and how to add new Platforms for Scraping section. Note: since this was documentation I made for myself, there are redundancies with the official documentation that can be safely removed.


Use Case to add Satellaview platform using EmulationStation and Screenscraper

This step-by-step use case will add the non-EmulationStation-standard system satellaview to the frontend, and scrape with the Screenscraper scraping module. Similar can be done for other frontends and scraping modules.

Note: "system" and "platform" terms can be interpreted as the same, the only difference being the context of what program/file uses it for

Note: This example use case will have some redundant information from the official documentation on this

Note: Close EmulationStation before starting

There are 4 files at play here:

es_systems.cfg

Add

<system>
    <name>satellaview</name>
    <fullname>Satellaview</fullname>
    <path>/home/pi/RetroPie/roms/Nintendo - Satellaview</path>
    <extension>.7z .bin .bs .smc .sfc .fig .swc .mgd .zip .7Z .BIN .BS .SMC .SFC .FIG .SWC .MGD .ZIP</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ snes %ROM%</command>
    <platform>satellaview,snes</platform> <!--Not used by Screenscraper, but by built-in ES scraper and maybe others-->
    <theme>satellaview</theme>
</system>

Note: This is a copy of the snes entry, replacing field values where appropriate. If your theme doesn't support Satellaview, you can revert the <theme> field to snes.

platforms_idmap.csv

Add

satellaview,107,-1,-1

107 points to the entry in screenscraper_platforms.json, while the -1 entries mean satellaview isn't supported as a platform by mobygames_platforms.json or tgdb_platforms.json (at least yet). -1 means it when scraping, it will look under the aliases defined for satellaview in peas.json when provided via -p satellaview as the platform to scrape on the command line.

peas.json

Add

"satellaview": {
    "aliases": [
        "snes",
        "nintendo power",
        "snes - super mario world hacks",
        "sufami turbo",
        "super famicom",
        "super nintendo",
        "super nintendo (snes)",
        "super nintendo entertainment system (snes)",
        "super nintendo msu-1"
    ],
    "formats": [
        "*.bin",
        "*.fig",
        "*.mgd",
        "*.sfc",
        "*.smc",
        "*.swc"
    ],
    "scrapers": [
        "openretro",
        "screenscraper"
    ]
}

Note: This is a copy of the snes entry while adding snes and removing satellaview in the aliases array.

Scrape and Generate Game List

Gemba commented 9 months ago

Thanks. I compiled your usecase in the documentation.

retrobit commented 9 months ago

Thank you, and thanks for creating this fork and actively maintaining it 😀

Maybe you'll see a pull request from me in the future 🙃