Giter Site home page Giter Site logo

skyscraper's Introduction

Skyscraper by Lars Muldjord

A powerful and versatile yet easy to use game scraper written in C++ for use with multiple frontends running on a Linux system (macOS and Windows too, but not officially supported). It scrapes and caches various game resources from various scraping sources, including media such as screenshot, cover and video. It then gives you the option to generate a game list and artwork for the chosen frontend by combining all of the cached resources.

All Skyscraper features are well-documented and there's also a F.A.Q. If you still have questions after reading the documentation, please consider asking them on the RetroPie subreddit or in the official RetroPie forums. The Issues page here on Github is for bug reports and feature requests only. Thanks!

Supported platforms (set with '-p'):

Check the full list of platforms here.

Supported scraping modules (set with '-s')

Skyscraper supports a variety of different scraping sources called scraping modules. Use these to gather game data into the Skyscraper resource cache. Check the full list of scraping modules here and read more about the resource cache here.

Supported frontends (set with '-f'):

  • EmulationStation
  • AttractMode
  • Pegasus

Code contributions and forks

Pull Requests are not currently accepted as I am focusing on other projects. If you are looking for a more community driven fork that seeks to expand the current feature set beyond what I've implemented here, you should check out this fork.

How to install Skyscraper

Follow the steps below to install the latest version of Skyscraper. Lines beginning with $ signifies a command you need run in a terminal on the machine you wish to install it on.

NOTE! If you are using the RetroPie distribution, you have the option to install Skyscraper directly from the RetroPie-Setup script (you need to update the script before installing it!). Read more about all of that here. If not, read on.

Install prerequisites

Linux

Skyscraper needs Qt5.3 or later to compile. For a Retropie, Ubuntu or other Debian derived distro, you can install Qt5 using the following commands:

$ sudo apt update
$ sudo apt install build-essential qt5-default

You might be asked for your sudo password. On RetroPie the default password is raspberry. To install Qt5 on other Linux distributions, please refer to their documentation.

NOTE! From Ubuntu 21.04 and forward the qt5-default metapackage no longer exists. You will instead have to do sudo apt install build-essential qtbase5-dev qt5-qmake qtbase5-dev-tools which installs the same as the above command.

macOS

Skyscraper works perfectly on macOS as well but is not officially supported as I don't own a Mac. But with the help of HoraceAndTheSpider and abritinthebay here's the commands needed to install the Qt5 and other prerequisites:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install gnu-tar --with-default-names
$ brew install wget
$ brew install qt5
$ brew link qt5 --force

If that went well, proceed to the default installation instructions below. It should work and give you a working installation of Skyscraper.

NOTE 1! User 'davidmgrantham' reports that the --with-default-names above might be deprecated for some macOS installations. If you remove it, you also need to download the update_skyscraper.sh and edit the tar commands to be gtar before running it.

NOTE 2! User 'trvrplk' reports numerous issues on MacOS 11.2+. Check here for potential fixes.

Download, compile and install

When you've installed the prerequisites as described above, you can install Skyscraper by typing in the following commands:

$ cd
$ mkdir skysource
$ cd skysource
$ wget -q -O - https://raw.githubusercontent.com/muldjord/skyscraper/master/update_skyscraper.sh | bash

The last command will download and run the latest update script from Github. During the installation you might be asked for your sudo password. On RetroPie the default password is raspberry.

When the script has completed you are ready to run Skyscraper!

Updating Skyscraper

From Skyscraper 2.3.2 and newer you can update to the latest version simply by running the following commands:

$ cd
$ cd skysource
$ ./update_skyscraper.sh

You might be asked for your sudo password during the update. On RetroPie the default password is raspberry. If your version is older than 2.3.2 (check with --help) you need to follow the installation instructions instead.

How to uninstall Skyscraper

If you've installed Skyscraper using the instructions in this readme, you can uninstall it using the following commands:

$ cd
$ cd skysource
$ sudo make uninstall
$ cd
$ rm -Rf skysource
$ rm -Rf .skyscraper

You might be asked for your sudo password during the processs. On RetroPie the default password is raspberry.

Windows

Windows is not officially supported at this time! But I do semi-regularly compile and release an unsupported Windows 64-bit version that works just fine. Be sure to read the included README from the downloaded file before using it! And just to be clear: You are on your own if you use this version - please don't ask me questions about it. Get the Windows version here.

How to use Skyscraper

IMPORTANT!!! In order for Skyscraper to work properly, it is necessary to quit your frontend before running it! If you're running EmulationStation, you can quit it by pressing F4.

Remember, you can completely customize the artwork Skyscraper exports. Check out the documentation here. If you just want to use the default (pretty cool looking) artwork Skyscraper provides, read on.

A simple use case

For first-time users I recommend reading the short and to-the-point use case. Please read it and get back here when you got the gist of it.

A quick run-down of Skyscraper

Skyscraper is a command line tool, and has many, many options for you to fiddle around with. I recommend taking a look at all of them to familiarize yourself with the possibilites:

$ Skyscraper --help
$ Skyscraper --flags help
$ Skyscraper --cache help

This will give you a description of everything Skyscraper can do if you feel adventurous! For a thorough description of all available options, check here.

The most important ones are probably:

  • -p <PLATFORM>
  • -s <SCRAPING MODULE>
  • -u <USER:PASS> or -u <KEY>
  • --cache refresh
  • --flags videos

If you have your roms in a non-default location (default for RetroPie users is /home/<USER>/RetroPie/roms/<PLATFORM>) or wish to export the game list or artwork to non-default locations, you will also need these:

  • -i <PATH>
  • -g <PATH>
  • -o <PATH>

For almost any command line option, consider setting them in the /home/USER/.skyscraper/config.ini file as described here. This will make the options permanent so you don't need to type them in all the time.

Gathering data for a subset of roms

Skyscraper offers several ways of gathering data for a subset of roms. If you just want to scrape the roms that have no data in the cache whatsoever, you can do so with the --onlymissing command-line option. You can also check out the --startat FILENAME and --endat FILENAME options. If you just want to gather data for a couple of roms you can simply add the filename(s) to the end of the command-line (eg. Skyscraper -p amiga -s openretro "/path/to/rom name 1.lha" "/path/to/rom name 2.lha"). And probably the most advanced (and quite handy) way to gather data for a subset of roms is to make use of the --cache report:missing=RESOURCE option. This can generate a report containing the filenames that are missing a certain resource. You can then feed the report back into Skyscraper with the --fromfile REPORTFILE afterwards. Skyscraper will then only scrape the files contained in the report.

config.ini

A lesser known, but extremely useful, feature of Skyscraper is to add your desired config variables to /home/USER/.skyscraper/config.ini. Any options set in this file will be used by default by Skyscraper. So if you always use, for example, -i <SOME FOLDER> on command line, you can set the matching option inputFolder="<SOME FOLDER>" in the config.

For a full description of all availabe config options, check here.

Resource cache

One of Skyscraper's most powerful features is the resource cache. It's important to understand how this works in order to use Skyscraper to its full potential. Read more about it here.

Custom data

I addition to allowing scraping from locally cached resources, Skyscraper also allows you to import your own data into the resource cache with the -s import scraping module. You can also edit existing resources in the cache or add individual user resources with the --cache edit command. Lastly, you also have the option of importing existing EmulationStation game list data into the Skyscraper resource cache if you need it. You can do this with the -s esgamelist scraping module.

To read more about any of the features described above, please check out all of the documentation here.

Artwork look and effects

Check the full artwork documentation here

Release notes

Version x.x.x (Features under consideration, all unimplemented)

  • Add the option to scrape from cached data purely originating from certain scraping modules
  • Consider making aliasMap the global baseName instead of just the search term base name. This will fix missing brackets in alias names being ignored later on
  • Make all artwork types custom meaning that their type can be whatever the user wants. The sources will create ones with known types such as 'screenshot' and 'cover', but the user can import other types they define themselves, such as 'cabinet' or whatever else. Internally artwork is then handled by a list of artwork instead of 4 hardcoded types in GameEntry
  • Introduce the ability to use in the 'file="somefolder/.png"' in artwork.xml which would then look for a file in 'resources' with the game basename.png allowing users to use their own custom artwork data as a workaround to adding new types to import (Thank you to 'jueank' for suggesting this)
  • Add the option of scraping custom platforms by configuring them in the config with an alias to an already existing platform. Example: scrape 'pcenginecd' could be scraped as 'pcengine' in case you have those files in a 'roms/pcenginecd' folder instead of the pcengine folder. Check here: #136
  • Create a testmode for the artwork compositor that let's you quickly render an example to see if you got everything set up right in the artwork xml
  • Allow 'region' to be a list similar to 'regionPrios'. When using 'region' it should simply keep the default priority list and add those from 'region' to the top. 'regionPrios' should still overwrite it entirely. Naming change probably a good idea, for instance rename 'region' to 'regionsPrefer' or something. 'regionPrios' should probably also be changed to 'regionsOverride'. (Thank you to 'corezon' for suggesting this).
  • Implement a less rigid filename match for the 'import' module to allow for close match filenames
  • Add support for grouping multi-disk games so they only have one entry in the gamelists. See issues/232 (Thank you to 'igno2k' for suggesting this)

Version 3.7.7 (28th June 2022)

  • Added '*.m3u' to 'segacd' platform (Thank you to user 'bmn001' for suggesting it)

Version 3.7.6 (12th June 2022)

  • Added 'pico8' platform (Thank you to user 'zerojay' for suggesting it)

Version 3.7.5 (31st January 2022)

  • Now allows ':' in Pegasus command

Version 3.7.4 (23rd January 2022)

  • '--includefrom' and '--excludefrom' now works with relative paths (Thank you to use 'sleve_mcdichael' for reporting this
  • Skipped file entries now conforms to same format as report files to allow using them with '--excludefrom' and '--includefrom' (Thank you to user 'TomFury' for suggesting this)

Version 3.7.3 (23rd January 2022)

  • Added 'switch' platform (Thank you to user 'Redemp' for providing info)

Version 3.7.2 (20th January 2022)

  • Skyscraper now only ignore files when using the '.skyscraperignore[tree]' files when scraping for new data. They will NOT be ignored when generating game lists

Version 3.7.1 (19th January 2022)

  • Skyscraper will now ignore an entire tree of subfolders where a file called '.skyscraperignoretree' is found (Thank you to user 'sromeroi' for suggesting this)

Version 3.7.0 (17th January 2022)

  • Moved '--fromfile' option to '--includefrom'. '--fromfile' still works, but is considered deprecated
  • Moved '--includefiles' option to '--includepattern'. '--includefiles' still works, but is considered deprecated
  • Moved '--excludefiles' option to '--excludepattern'. '--excludefiles' still works, but is considered deprecated
  • Added '--excludefrom' option similar to '--includefrom' only the opposite (Thank you to user 'TomFury' for suggesting this)
  • Skyscraper will now ignore any subfolders within the input folder where a file called '.skyscraperignore' is found (Thank you to user 'sromeroi' for suggesting this)
  • Added platform 'easyrpg', only usable using the 'screenscraper' scraping module (Thank you to user 'zerojay' for suggesting this)

Version 3.6.16 (9th November 2021)

  • Added platform 'moto' (Thank you to user 'Yserra' for suggesting it)

Version 3.6.15 (25th August 2021)

  • Added 'chd' extension to 'atomiswave' platform (Thank you to user 'smeegoan' for reporting this)
  • Fixed bug that caused 'T000000' to be added multiple times when skipping entries in ES gamelists (Thank you to user 'sleve_mcdichael' for reporting this)

Version 3.6.14 (5th August 2021)

  • Added 'windows 3.x' as alias to Mobygames scraping module (Thank you to user 'ecto' for reporting this)

Version 3.6.13 (2nd June 2021)

  • Added 'mediaFolderHidden' EmulationStation specific config option that will set the media folder to 'PLATFORM/.media' when set to true. This can speed up EmulationStation initial loading when using slow storage such as a network file system (Thank you to user 'XenuIsWatching' for suggesting this)

Version 3.6.12 (15th May 2021)

  • Removed 'Simple Mode' as it was broken and deprecated. Use RetroPie script instead
  • Removed A LOT of deprecated (and hidden) CLI options

Version 3.6.11 (6th May 2021)

  • '--fromfile' now accepts both relative and absolute path to filename (Thank you to user 'sleve_mcdichael' for reporting this)
  • Added platforms 'atarijaguarcd', 'pcenginecd' and 'channelf' (Thank you to user 'XenuIsWatching' for providing info)

Version 3.6.10 (12th April 2021)

  • Added 'naomi' as platform
  • Added 'msx2' as platform
  • Added 'atomiswave' as platform

Version 3.6.9 (1st April 2021)

  • Probably fixed --flags unpack which broke with 3.6.8 due to deprecated Qt function calls
  • Probably fixed video conversion which broke with 3.6.8 due to deprecated Qt function calls

Version 3.6.8 (31st March 2021)

  • Added 'cacheRefresh' config.ini option and added it to default config.ini for 'esgamelist' module (Thank you to user 'penx' for suggesting this)
  • 'ScreenScraper APIv2 returned invalid / empty Json' message now no longer includes message to attach the error json file unless it's more than 64 bytes long
  • Added 'ca' to region priority list (Thank you to user 'joaoluizcarvalho' for pointing this out)
  • Added 'de', 'fr' and 'es' to default language priority list
  • Added 'players' resource to '--cache report:missing' CLI option (Thank you to user 'peligwe' for reporting this)
  • Added 'theInFront' config.ini option and 'theinfront' CLI flag (Thank you to user 'sleve_mcdichael' for suggesting this)
  • 'unattend' and 'unattendSkip' can now be used in a scraping module section in config.ini (Thank you to user 'sleve_mcdichael' for reporting this)
  • Added Qt version pre-processor checks for deprecated Qt methods to avoid compilation warning on newer Qt installations

Version 3.6.7 (27th January 2021)

  • Added '*.rvz' extension for 'wii' and 'gc' platforms (Thank you to user 'tcamargo' for reporting this)
  • Added '*.chd' extension for '3do' platform (Thank you to user 'Roudaku' for reporting this)
  • Added 'openbor' platform. Exists in RetroPie as experimental platform (as requested by user 'hahnmt')
  • 'neogeo' platform now uses 'box-2D' as cover instead of 'flyer' when scraping with the ScreenScraper module (Thank you to user 'retro81' for suggesting this)

Version 3.6.6 (21st December 2020)

  • The 'esgamelist' module now looks for the 'gamelist.xml' file in the path set with '-g' instead of the path set with '-i' (Thank you to user 'c0d3h4x0r' for reporting this and helping me debug it)

Version 3.6.5 (18th December 2020)

  • Now uses one shared networking instance, instead of one per thread
  • 'daphne' platform entries now added as '' entries instead of '' entries (Thank you to user 'clyde' for helping figure this out)
  • Added 'nocropblack' cli flag and 'cropBlack="BOOL"' config.ini option that allows user to disable cropping of black borders around screenshots when compositing the final gamelist artwork (Thank you to user 'WindyWinston' for suggesting this)

Version 3.6.1 (27th October 2020)

  • Added 'amigacd32' as a separate platform just because (Thank you to user 'HoraceAndTheSpider' for resetting The Matrix)

Version 3.6.0 (25th October 2020)

  • Changed 'SecsSinceEpich' to 'MSecsSinceEpich' to support pre-5.8 Qt versions (Thank you to user 'Hazza4569' for reporting this)

Older releases

Release notes for older releases can be found here.

skyscraper's People

Contributors

mgerhardy avatar muldjord avatar seriema avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skyscraper's Issues

PSX Games Not Found

Probably a newbie problem but most of my PSX games cannot find a match using the "Skyscraper -p psx --region US" command. For instance, can't find Mega Man 8 (USA). I've looked at screenscraper.fr for example and verified the games are on there and have tried renaming local files to different things for various regions with and without parentheses and changing roman numerals but it won't pick up. I haven't had this issue with other platforms.

Also, love what you've done. You have the best scraper.

Unable to scrape ScummVM games

I'm unable to scrape about half of my ScummVM games, and the half that I can scrape requires some hacking.

I have about 50 ScummVM games installed. A first scrape run gives no results (quits after 30 failures). Command entered is:

Skyscraper --nobrackets --region us --videos -u xxx:yyy -s screenscraper -p scummvm

(dropping the "region" or "-u" parameters has no effect)

If I rename all the ".svm" files to ".scummvm" and rerun the scrape, about half the games scrape correctly. This isn't ideal - ScummVM regenerates the .svm files when it starts, so the only way to avoid having duplicates in the list is to change the filenames back after the scrape, then manually edit the gamelist.xml.

I can get a few more scrapes by editing filenames further to match the filenames listed for each game on Screenscraper. This mostly involves removing platform-specific suffixes from the filenames (e.g. "kq2-amiga.scummvm" becomes "kq2.scummvm". It's not always required to do this. For example, "pq2-amiga.scummvm" scrapes successfully even though the only filename listed on Screenscraper is "pq2.scummvm". I'm not sure why this seems to matter sometimes, but sometimes does not. The fact that renaming from *.svm to *.scummvm suggests the filename on Screenscraper matters - they list only *.scummvm names.

In any case, about 25 games still won't scrape, despite the fact that their filenames precisely match those listed on Screenscraper. The following files don't scrape:

'baseball', No returned matches
'bc', No returned matches
'camelot', No returned matches
'dig', No returned matches
'eob', No returned matches
'eob2', No returned matches
'ft', No returned matches
'gk1', No returned matches
'iceman', No returned matches
'ihnm', No returned matches
'laurabow-amiga', No returned matches
'laurabow', No returned matches
'lol', No returned matches
'longbow', No returned matches
'loom-vga', No returned matches
'maniac', No returned matches
'scalpel', No returned matches
'monkey2', No returned matches
'scummvm', No returned matches
'simon1', No returned matches
'zak-v2', No returned matches
'simon2', No returned matches
'zak', No returned matches

These aren't rare games.

From reading threads on the Retropie forums, it sounds like Skyscraper is using more info than the filenames/checksums/hashes when scraping ScummVM games, possibly data from scummvm.ini? I tried editing some game names in that file (to match the name listed in Screenscraper), but that didn't help.

Running Retropie 4.4, Skyscraper v2.5.3. Internet connection is cable.

Sharp X68000

Hi, love your scraper. Any chance you can add the Sharp X68000?

Command line switch to always skip existing entries

I tried to find this option in help but couldn't see it so apologies if I missed something.

Instead of responding to the question each time skyscraper.sh is run, it would be useful to have a switch to always skip existing entries in case there is a need to preserve custom entries in gamelist.xml.

Cheers,

Chris

Incorrect matches on street fighter variants

Hi- Firstly, Sky Scraper is amazing! Great for all my platforms especially the Amiga where everything is quite patchy. Is there a rule to how I name games? I've several variants of street fighter 2;

SuperStreetFighter2_v1.1_AGA.lha
SuperStreetFighter2DX_v1.1_AGA.lha
SuperStreetFighter2Turbo_v1.1_CD32.lha

But they all get ripped as the same game? Whats the source data for the rip, so I can check against that and rename my files accordingly? Thanks

Does not see dreamcast .chd files as roms

Performed initial simple scrape for dreamcast and it found 0 roms in default rom directory which in fact had a few dozen dreamcast .chd files.
compiled/executed on Lubuntu 17.10 dedicated retropie/ES system. Roms in default path /home/pi/RetroPie/roms/dreamcast/. Attempted scrape with my preferred settings as well as with all default options.

Support for extra extension(s)

First of all great work. Your scarper is extremely useful!

To make it even better, could we have extra file extension support and not just the build in file types?
I usually use zstd to compress my roms and the scrapper ignores them.

Something like --extraextension < file extension >

First-run Simple Mode -- very minor issue

Probably no more than a minor annoyance here, but just wanted to make mention. Ran Skyscraper setup in Simple Mode. The very last question it asks is, "Do you want to run it now? (Y/n)?"

Typing in "Y" resulted in the message "User chose not to run script, now exiting..."

Again, not a huge issue since it printed the path and I knew where to go to to run it, but should probably check that last choice to see if it was coded backwards or something.

Retropiemenu Skyscraper Script (install & update) by 2Play!

Please find a retropiemenu script for installing and updaring Skyscraper!

Steps:

  • Unzip .sh file
  • Copy to your Retropie retropiemenu directory
  • Check the permissions and make executable if needed by sudo chmod 755 skyscraper.sh
  • Start or restart your ES and you should see the new entry.
    Concept-Creation by me, Skyscraper by Lars of course!
    skyscraper.zip

Screenscaper fails for specific PSX title

I can't get the screenscaper module to work for a specific title. Running with latest version of Skyscraper. All other titles scrape without issue.

$ uname -a
Linux retropie 4.14.52-v7+ #1123 SMP Wed Jun 27 17:35:49 BST 2018 armv7l GNU/Linux

Metal Slug X (USA).cue

$ md5sum roms/psx/Metal\ Slug\ X\ \(USA\).cue
3f7584d4de401e140f26a63ffbf74d11  roms/psx/Metal Slug X (USA).cue
$ sha1sum roms/psx/Metal\ Slug\ X\ \(USA\).cue
3c4b2b6f58c8c9d9dddb72d755d19587550e1787  roms/psx/Metal Slug X (USA).cue

Listing at screenscraper:
https://www.screenscraper.fr/rominfos.php?romid=275439&zone=rominfosgenerales

Output with --verbosity 3

#1/1 (T1) Pass 1 Pass 2 Pass 3 Pass 4 ---- Game 'Metal Slug X (USA)' not found :( ----


Debug output:
Tried with sha1, md5, filename: 'Metal%20Slug%20X%20%28USA%29.cue', '3C4B2B6F58C8C9D9DDDB72D755D19587550E1787', '3F7584D4DE401E140F26A63FFBF74D11'
Platform: psx
Tried with sha1: 3C4B2B6F58C8C9D9DDDB72D755D19587550E1787
Platform: psx
Tried with md5: 3F7584D4DE401E140F26A63FFBF74D11
Platform: psx
Tried with name: Metal%20Slug%20X%20%28USA%29.cue
Platform: psx

Elapsed time: 00:00:01
Estimated time left: 00:00:00

As you can see, the name, md5, and sha1 all match up with the screenscraper listing for this file.

Artwork getting mixed up between games

I've been doing a bunch of testing of Skyscraper 2.3.4 and clearly something is really, really off with the localdb at this moment. As some have pointed out it appears that the local database is mixing up artwork for different games, seemingly half-random but always with games close to them alphabetically.

I am currenly investigating this issue...

Atari 2600 & C64 scraping always freezes

Hi,
When i try to scrape Atari 2600 roms or C64 disks Skyscraper always freezes after some time. I tried booth 3-4 times, but booth always freezes. It is not at scraping the same rom/disk, it is always at diffent times (e.g. sometime at the 905s rom, next time at the 134s rom).

What it do: simply stops operation. You only see the output of the last rom + a elapsed time/estimated time line. No error, only didn‘t do anything anymore.

I am running the latest retropie image and the latest Skyscraper. My connection is WiFi.
We are talking about 4000 Atari 2600 Roms and 50000 C64 Disks & co.

And it is permanent. I can reproduce the error every time.....but it stops working at different times in the scraping process.
Other scrapes with big volumes of data (like Amstrad CPC, also about 5000 disks or Mame worked without any problem).

I am using skyscraper in simple mode.

use users real homedir instead of hardcoding to /home/pi

Hi,

I've tried running the script, but my home folder is not /home/pi as I don't want any default users on my boxes.
Hence the scraper fails as it cannot find /home/pi/...
I tried hacking src/attractmode.cpp and src/emulationstation.cpp and changing the hardcoded /home/pi/ to ~/
That does a bit more as the Input folder is now correctly identified, but then before starting it fails on the input folder again

Running Skyscraper v2.4.9 by Lars Muldjord

Platform:           'nds'
Scraper module:     'openretro'
Input folder:       '~/RetroPie/roms/nds'
Game list folder:   '~/RetroPie/roms/nds'
Covers folder:      '~/RetroPie/roms/nds/media/covers'
Screenshots folder: '~/RetroPie/roms/nds/media/screenshots'
Wheels folder:      '~/RetroPie/roms/nds/media/wheels'
Marquees folder:    '~/RetroPie/roms/nds/media/marquees'
Local db folder:    'dbs/nds'

Looking for optional 'priorities.xml' file in local db folder... Found!
Priorities loaded successfully!

Input folder '/home/xxxx/.skyscraper/~/RetroPie/roms/nds' doesn't exist or can't be seen by current user. Please check path and permissions.

I think it would be an improvement of the scraper used the users real home directory instead of hardcoding it.

Process getting killed with OpenRetro scraping module

I've been fighting a fierce battle with a memory leak over the past few days. It seems that when running Skyscraper on the pi, I get sudden raises in memory usage for no particular reason, but seemingly only when scraping with the 'openretro' scraping module.

There's a chance that this is related to bugs in either openssl or Qt's QNetworkAccessManager as this only seems to happen on the Pi and not on my PC (where I run Qt 5.9 vs 5.3 on the Pi), not sure.

I'll keep investigating, but for the moment, don't be surprised if Skyscraper gets killed by the kernel when the Pi runs out of memory. A workaround could be to run it with fewer threads.

Cover art associated with wrong games

After scraping (tried this with both Amiga and spectrum games on emulation station), several titles will often show the cover artwork for the previous, completely unrelated, title. Re-ran the import a few times, and thought it might be related to threading so re-ran again with 1 thread but it made no difference.

Let me know if there's anything else you need.

Many thanks

Sega CD

Hi, the scraper can’t find media for segacd, screenscraper is usually reliable but can’t find any roms, could this be because the system is also referred to as megacd?

Amiga games not found when you select no scraper

Hi Lars,

just want to say that in version 2.4.4 if you scrape amiga with “Skyscraper -p amiga” it doesn’t find anything. If you scrape with”Skyscraper -p amiga -s openretro” it works. So i think openretro isn’t the default?

I’m scraping with .lha files. Also some games like Lotus and Lotus2 are not found because of the name of the .lha file i think.

Greetings,
Marco

Precompiled binaries for different platforms

Hi! First of all, many thanks for your work!

I wanted to suggest you to either share pre-compiled binaries or set up an automatic build system so that potential users grow bigger and can enjoy your work. Users on Retropie or a full Linux distro don‘t have it very difficult, but Recalbox and Windows users would need to learn to too much stuff to even dare to try.

Best regards!

Consider using alternative API for TGDB

TGDB exposes PlatformGames and GetPlatformGames which could allow for a great reduction in the number of searches performed on this scraper. The returned XML could be fuzzy matched against the file names within the input directory.

Additionally, the PlatformGames API also exposes a URL to the thumbnail (if there is one), so this could aid in determining whether or not a thumbnail exists for a given title.

Specific game name scrape

Hi there

I know the scraper has tried to get away from using name matching and has the “match percentage “ option....

But since .uae files can’t be matched by A checksum, is there any way to scrape a single game, on a full name match basis only? Or even to provide it a specific page to grab the info from?

I have some Amiga games that don’t return a result but are clearly on openretro and when doing game boy games I was very surprised to see Pokemon Red didn’t achieve a match!

I am going to try and build up a good local database, although I don’t always feel it is asking me questions about adding to existing files when it should... :/

<video> tags are removed from gamelist.xml when entries are skipped

Hello.

Here are the steps I followed to reproduce this issue:

  1. Run skyscraper.sh with the following lines:
#!/bin/bash
Skyscraper -p arcade --nobrackets --videos --unattend -s screenscraper --pretend
Skyscraper -p arcade --nobrackets --videos -s localdb

Skyscraper generates correct XML with

  1. Re-run same skyscraper.sh script
  2. When asked the question 'gamelist.xml' already exists, do you want to overwrite it (y/N)? I select "y"
  3. When asked the question Do you wish to skip existing entries (y/N)?, I select "y" (I like to make custom changes/corrections that I don't want overwritten)

Result: gamelist.xml should remain the same for existing entries but instead all <video> lines are removed

Technical information

  • Skyscraper version: 2.6.0
  • Internet connection: ADSL
  • OS: RetroPie
  • OS Version 4.4

Regards,

Chris

Specify allowed extensions for each platform

Hi -

This is a great tool (way better than the built GamesDB in Emulation Station! However for the Amiga emulator setup I have on RetroPie/UAE4ARM, I need two files (minimum) per game - the ADF(s) and the UAE config. This means Skyscraper scrapes (at least) 2x more files than it needs too - or at least it reports 2x the number of files during the scrape.

Would it be possible to add a filter to the config.ini under [platform] for 'accepted-extensions' or something similar? Then for Amiga, I could just use ".uae".

Media placement - Simple Mode

Ok, so I get that this is mainly for the Raspberry Pi with RetroPie build on Debian however we are seeing an issue that may be OS related however I am not so sure. First of all the installation instance is on an Odroid XU4 with Ubuntu Minimal 16.04LTS. We use a path of /home/pigaming rather than /home/pi/ since this is not a raspberry pi board. It appears that the covers and wheels and even in some instances videos that skyscraper scrapes are winding up in the /home/pigaming/.skyscraper/dbs folder and never making in into the game list prescribed folder. This is a issue not only because it takes up space and people wont know why they have no space left, but also my understanding is that the application is not meant to have the media removed from the db. I am at a loss if during the "wizard" I tell it where to dump the media that the path being provided is being ignored. I also just want to add that I know there are some kinks to work out with this but it is the best scraper I've seen so far. The XMLs it produces are gold and the application seems like it is becoming very stable and overall for the most part reliable.

Option to scrape all systems

Would this be possible with this scraper? This has to be the best one out there, the one thing I find annoying is I have to specify systems to scrape one at a time.

Support .m3u files for multi-disc PSX titles

All of my PSX games are in .bin/.cue format. In order to allow for easy disc swapping with RetroPie's pcsx emulator, I wrote a script to go through my collection and create .m3u "playlists" listing each game's renamed .cue files, as described here:
https://github.com/RetroPie/RetroPie-Setup/wiki/Playstation-1#m3u-playlist-for-multi-disc-games

My setup is exactly the same as outlined in the above documentation. For example, I have the following files in my roms directory:

-rw-rw-r-- 1 pi pi 718738272 Dec 25  1996 Xenogears (USA) (Disc 1).bin
-rw-rw-r-- 1 pi pi        90 Dec 25  1996 Xenogears (USA) (Disc 1).CD1
-rw-rw-r-- 1 pi pi 688700880 Dec 25  1996 Xenogears (USA) (Disc 2).bin
-rw-rw-r-- 1 pi pi        90 Dec 25  1996 Xenogears (USA) (Disc 2).CD2
-rw-rw-r-- 1 pi pi        58 Jul 28 18:46 Xenogears (USA).m3u

where the .CD1 and .CD2 files are simply renamed .cue files for those discs, and Xenogears (USA).m3u is a plaintext file with the following contents:

Xenogears (USA) (Disc 1).CD1
Xenogears (USA) (Disc 2).CD2

However, it doesn't appear that this game is successfully scraped. I do get an entry in my gamelist.xml for this game but all the fields appear to be empty. Most multi-disc/m3u games don't appear at all in the gamelist.xml (I'm not yet sure what explains this discrepancy, although I do have plenty of cached data in localdb).

There are references to m3u in the formats list in src/platform.cpp, so I hope this is an intended feature and that it wouldn't be too hard to implement.

Default rom directory change

My question is when scraping a already scraped rom set how do you change the default directory if the directory used is not the default?

Screenscrapper "msx2" not working

I have found a problem scrapping my games using the website "screenscraper"
Worked great with msx but when I try to scrappe msx2 it doesnt found anyone.
I think is because they have separate folders for msx and msx2 games.

MSX2 - SCREENSCRAPER - Base de données et téléchargement ...

https://www.screenscraper.fr/gamesinfos.php?plateforme=116&alpha=0&numpage=0

Can you please take a look at this?

UPDATE1: Looking at the website link it shows "plateforme=116" for MSX2 and "plateforme=113" for MSX , maybe this can help.

PD: Congrats for your work , I have tested your tool and I think is the best scrapper ever.

Proxy Support

I can think of a few situations in which it would be handy to use a proxy when scraping. It would be nice to see a command line option to specify a SOCKS proxy, or possibly just have Skyscraper obey the http(s)_proxy environment variables.

I was able to paste some very boilerplate QNetworkProxy setup code in the NetComm class constructor and it seemed to work OK with my simple localhost SOCKS proxy that I created with ssh -D8080 <myremotehost>. I think it would be relatively straightforward to make this a configurable option.

Screenscraper "-p psx" but scrappes "-p psp"

Hi , thanks for still working on the tool , I'm testing the lastest version but I have a problem on screenscraper.
I set "-p psx" but is setting the "psp" platform.
Can you check it?
Thanks.

Relative paths for images + roms

If I understand the gamelist.xml format correctly, relative paths to the rom and the media files are supported. It would be nice if Skyscraper supported that, either by default or with a command line switch.

The reason is that I (like others I suppose) use Skyscraper on a different device (I use it on both my Mac and a Synology) and the paths in the resulting gamelist.xml need to be fixed manually in order to work on my portable RetroPie console.

Dreamcast - scrapes return same information for all roms

I've successfully scraped a wide range of systems. I'm now trying to scrape Dreamcast roms and Skyscraper is behaving strangely.

If I scrape in --pretend --updatedb mode, everything works fine. But in any "real" (i.e. not "pretend") mode, Skyscraper copies the same information (title, description, video, etc) to ALL of my roms. Which game it chooses seems random. For example, in my most recent run all roms scraped information related to "Virtua Tennis". Sometimes it's even I game I don't have (D-2) that shouldn't be in my local db at all!

Exact command that led to the behavior:

Skyscraper -u xxx:yyy -s screenscraper --videos --nobrackets -p dreamcast

I've tried purging the db, even deleting the "dreamcast" folder under ~/.skyscraper/dbs. Nothing seems to change the behavior. Again, other systems work fine.

I did update all packages on my pi today, but I was able to scrape other systems successfully after the update, so I don't think it's related.

Scraping with mobygames just hangs

Just trying to clean up some c64 roms that didn't scrape with Moby Games database, but when I run the command nothing happens.

Describe the bug
Scraping using $ Skyscraper -p c64 -s mobygames, just hangs in the terminal - it doesn't scrape or pull any results. I can scrape with all the other db's just fine.

Given the message below and it just hangs.
Starting scraping run on 4648 files using 1 threads.
Sit back, relax and let me do the work! :)

To Reproduce
Skyscraper -p c64 -s mobygames

Special circumstances
No - Vanilla retropie build

Terminal output
If applicable, add terminal output to help visualize your problem.

Technical information

  • Skyscraper version: 2.5.3
  • Internet connection: wifi
  • OS: Retropie with Emulationstation
  • OS Version 4.4

PSX ROMs scrape no data or null data

Attempting to run Skyskraper from the command line and Skyskraper -p psx both result in the same outcome. Games are either not found or are found but scrape no valuable data; there are no images, genre/date/player count is unknown, and there is no description. Essentially, scraping for PSX won't return values from any scraping source.

ROM file types: bin/cue, img, pbp
ROM file names: versions of Game Name, Game Name (region), and Game Name (SLUS-1234)
RetroPie version: 4.4
Skyscraper version: latest release (installed 2 days ago)
internet: 20 mb/s DSL
machine: no special circumstances or modifications, ROMs run from local microSD
commands: both Skyscraper and Skyscraper -p psx experience the issue
scrape settings: default paths, default matching percentage, not scraping video, have tried adjusting the other few options with no effect

Ability to strip region codes from game titles

I'm considering implementing functionality to strip region names from game titles in hopes that it may improve accuracy. How feasible/worthwhile would this endeavour be?

For example:

Adventures of Dr. Franken, The (Europe) (En,Fr,De,Es,It,Nl,Sv)

Could be translated to:
Adventures of Dr. Franken, The (Europe)

Or:
Adventures of Dr. Franken, The

Or perhaps even (if we were to detect the presence of ", The" succeeding all else but region/language tags:
The Adventures of Dr. Franken

Possible to scrape in parts?

Is it possible to scrape in parts? Only lets say the first 100 or so. Sometimes skyscraper kills and you have to start all over again.

Tested on ODroid with RetroPie

Not an issue, not sure if this is already confirmed- but I've successfully installed and run this on RetroPie Ordoid image- all runs perfectly. Just thought I'd let you know! Successfully scraped amiga/ megadrive so far..

Stretch version for pi 3 model b+

Please make a version for the stretch beta version of RetroPie. It will install, but when I type in Skyscraper in both the regular directory and skysource, it says command not found.

Attract Mode (overview and missing)

I love this project but I´m missing a couple of things I don´t know how to do:

1 - Using the "Attract Mode" option I see the tool reading game descriptions and it´s appending all of them into the db foder but doesnt create the "romname.cfg" files to use then on the frontend.
Is there any option to do this?

2 - "Attract Mode" option too , is there any option to append all the missing scrapped roms at the end of the "emulator.txt" .
I mean it creates a "missing.txt" file but it inst well formatted to be used with attract mode.
So you need to append it manually to the "emulator.txt" , replacing rom extensions and adding tons of ";"

Curl command - Clean Install - Permission Denied line 7

I tried to run clean install.
curl command give below:

sudo curl https://raw.githubusercontent.com/muldjord/skyscraper/master/update_skyscraper.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1074 100 1074 0 0 4142 0 --:--:-- --:--:-- --:--:-- 4146
bash: line 7: VERSION: Permission denied
bash: line 9: VERSION: No such file or directory
--- Fetching Skyscraper v.2.4.10 ---
--2018-06-14 15:17:42-- https://github.com/muldjord/skyscraper/archive/2.4.10.tar.gz
Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/muldjord/skyscraper/tar.gz/2.4.10 [following]
--2018-06-14 15:17:43-- https://codeload.github.com/muldjord/skyscraper/tar.gz/2.4.10
Resolving codeload.github.com (codeload.github.com)... 192.30.253.120, 192.30.253.121
Connecting to codeload.github.com (codeload.github.com)|192.30.253.120|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1832434 (1.7M) [application/x-gzip]
2.4.10.tar.gz: Permission denied

Cannot write to ‘2.4.10.tar.gz’ (Permission denied).

MameDB - Potential new source

ArcadeDB seems to be down for maintenance, not expected to be up till early next year as per their forum. So currently scraping arcade rom's is out of the question.

I came across the following websites which seem to both have a pretty good databases: mamedb.org & mamedb.blu-ferret.co.uk

I like the way mamedb.blue-ferret.co.uk search is formatted, the URL's point directly to the rom information page.. mamedb.org seems to use unique ID's for each of roms info pages, so they would need to be grabbed from the search results list.. bit more coding I guess.

The mamedb.blu-ferrest.co.uk website seems a little buggy when navigating using my web browser, for whatever reason my browser was downloading the href PHP page links... guess apache isn't configured correctly or something. Although when punching the searches directly into the URL it works really well !

Anyway... mamedb.blue-ferret search pattern is as follows: http://mamedb.blu-ferret.co.uk/game/frogger

They don't feature any video's, however they both seem to include titles, screenshots & marquees.

Terminal GUI

Title is self explanatory, would be great for a terminal GUI similar to sselphs scraper.

Download box art instead of screenshots by default

Hello again,

I have a preference to use raw box art instead of in-game screenshots for use in EmulationStation. By default Skyscraper will only download in game screenshots to the "screenshots" subfolder. Is there any way to override this behaviour to download box art to here instead?

Cheers,

Chris

<marquee> location removed from gamelist.xml when re-scraping with -unattendskip

Hello!

I found a bug with 2.70, reproduced as follows:

Copy artwork.xml.example2 to artwork.xml (to download raw/unaltered images)
Run Skyscraper with Skyscraper -p arcade --nobrackets --videos --unattendskip -s localdb options

All marquee data is correct and present in gamelist.xml ie. <marquee>/home/pie/retropie/roms/pang.png</marquee>

Edit a title manually in gamelist.xml and save the file
Re-run Skyscraper -p arcade --nobrackets --videos --unattendskip -s localdb

All <marquee> lines are changed to <marquee /> with no other data.

Cheers,

Chris

Occasional hangs after showing Elapsed and Estimated time

Running in Raspberry Pi3 with last Retropie and last Skyscraper (just compiled)

Sometimes after some scraping, it seems it hangs after showing the times. Don't know what is doing exactly, it stops there for many minutes, finally i hit ctrl+c

I used --verbose, but don't show anything about this

Is there a way i can tell if it's working? I suppose if it don't show anything new for several minutes is bugged?
Thanks
Edit: for example, now is stopped in Shinobi game using openretro as scraper. It says 100% match, then shows the times, and ... thats all. I must hit ctrl+c to exit.

Zip archives produce no matches in localdb

Describe the bug
Zip archives do not match anything in localdb.

To Reproduce
Tried zipping my roms and then scraping from localdb and it finds nothing when I had 100% when they were just rom files.

Special circumstances
None

Terminal output
No matches.

Technical information

  • Skyscraper version: 2.7.1
  • Internet connection: cable
  • OS: RetroPIe
  • OS Version: 4.4

Additional context
Originally I tried 7z archives and then zip archives but neither worked. I saw there were old notes about zip archives being supported, but I am not sure how they are supported since screenscraper always fails to find anything for archived roms.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.