Skip to content

Commit edeefca

Browse files
authored
Support for backcover/boxback (#197)
- Online: Screenscraper.fr and TGDB - Local: esgamelist, import - Updated documentation Other changes: - rewrote copy of gamelist media (QFlags) - IGDB improvements and token lifetime fix Minor changes: - fix tests - more compact table layout in mkdocs - overwrite static Skyscraper config files on startup only when different from source
1 parent bc89db2 commit edeefca

62 files changed

Lines changed: 1590 additions & 783 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.whitesource

Lines changed: 0 additions & 14 deletions
This file was deleted.

batocera-artwork.xml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<artwork>
3-
<!-- copies the resourcetypes without any artwork applied to the respective mediafolder -->
4-
<output type="screenshot"/>
5-
<output type="marquee" resource="wheel" />
6-
<output type="cover" />
7-
<output type="wheel" />
3+
<!--
4+
No artwork is applied and the media files are copied as-is for the gamelist.
5+
See ARTWORK.md or artwork.xml.example* for options.
6+
-->
87
</artwork>

cache/priorities.xml.example

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,17 @@
115115
<source>esgamelist</source>
116116
<source>screenscraper</source>
117117
</order>
118+
<order type="fanart">
119+
<source>import</source>
120+
<source>esgamelist</source>
121+
<source>screenscraper</source>
122+
<source>thegamesdb</source>
123+
<source>igdb</source>
124+
</order>
125+
<order type="backcover">
126+
<source>import</source>
127+
<source>esgamelist</source>
128+
<source>screenscraper</source>
129+
<source>thegamesdb</source>
130+
</order>
118131
</priorities>

docs/CACHE.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ The developer of a game
7979

8080
##### players
8181

82-
How many players are supported by a game
82+
How many players are supported by a game (simultaneous or alternating)
8383

8484
##### tags
8585

@@ -111,7 +111,9 @@ Wheel (logo) image filename for a game (file stored below `wheels` subfolder)
111111

112112
##### marquee
113113

114-
Marquee image filename for a game (file stored below `marquees` subfolder)
114+
Marquee image filename for a game (file stored below `marquees` subfolder).
115+
Historically this artwork contained the game title and the manufacturer. It
116+
was shown above the screen of an arcade machine.
115117

116118
##### texture
117119

@@ -131,3 +133,8 @@ subfolder)
131133

132134
Since v3.18: Background image displayed in some frontends (e.g. Batocera) and
133135
themes for a game (file stored below `fanarts` subfolder)
136+
137+
##### backcover
138+
139+
Since v3.18: Image of the back side of a game packaging, aka cover back side or
140+
box back (file stored below `backcovers` subfolder)

docs/CHANGELOG.md

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,33 @@
33
This page summarizes the changes of each Skyscraper release, a [changlog for
44
humans](https://keepachangelog.com).
55

6-
### Version 3.18.0 (2025-TBA)
6+
### Version 3.18.0 (2025-11-23)
7+
8+
Opened [Github Discussions](https://github.com/Gemba/skyscraper/discussions),
9+
the place to put ideas or to table Skyscraper puzzles.
10+
11+
#### Frontends and Scraping
712

813
- Added: Support for [Batocera gamelists](FRONTENDS.md#batocera) incl. fanart
9-
output
10-
- Added: Support for fanart gamelist output for ES-DE and some [EmulationStation
11-
variants](CONFIGINI.md#gamelistvariants)
12-
- Added: Fanart scraping with Screenscraper-, TGDB- and Import-scraper. See flag
13-
and config option [`fanarts`](CLIHELP.md#fanarts)
14-
- Added: Support for ES-DE miximages output (aka Skyscraper artwork) with [flag
15-
miximages](CLIHELP.md#miximages)
14+
and boxback output, thanks for external testing and feedback, @RandomNinjaAtk.
15+
- Added: Support for fanart and backcover gamelist output for ES-DE and some
16+
[EmulationStation variants](CONFIGINI.md#gamelistvariants)
17+
- Added: Fanart scraping with Screenscraper-, The Games DB-, IGDB- and
18+
Import-scraper. See flag and config option [`fanarts`](CLIHELP.md#fanarts)
19+
- Added: Support for ES-DE miximages output (aka Skyscraper artwork) with [`--flag
20+
miximages`](CLIHELP.md#miximages)
21+
- Added: Scraping of backcover (aka. boxback) from Screenscraper and The Games
22+
DB and output for Batocera and ES-DE. See flag and config INI option
23+
[`backcovers`](CLIHELP.md#backcovers)
24+
- Updated: The Games DB scraper for Sega Genesis also tries Sega Megadrive for
25+
matches, if you made changes to `platforms_idmap.csv`, see [the platform
26+
doc](PLATFORMS.md#transferring-local-platform-changes) to move it to another
27+
file, to benefit from this update.
28+
- Fixed: Wrong IGDB token expire time calculation, which resulted in games not
29+
to be found at their site in some scenarios.
30+
31+
#### CLI and Options
32+
1633
- Added: Option to force Screenscraper scrapes to use the stem of the game
1734
filename instead of derived parameters. See
1835
[`--searchstem`](CLIHELP.md#-searchstem-extension) and the last question in
@@ -25,7 +42,12 @@ humans](https://keepachangelog.com).
2542
to `--flags videos`. However, in the config file accept only plural as before.
2643
- Added: Flag [`--buildinfo`](CLIHELP.md#--buildinfo), comes in handy when
2744
reporting an issue.
28-
- Updated: Option `theInFront` covers also the indefinite article 'a'.
45+
- Updated: The prefix "~/" in path-like configuration options will be expanded
46+
to [QDir:homePath()](https://doc.qt.io/qt-6/qdir.html#homePath).
47+
- Updated: Option `theInFront` now covers also the indefinite article 'a'.
48+
49+
#### Varia
50+
2951
- Updated: macOS installation instructions to use Qt6
3052
- Updated: Docker uses Ubuntu 24.04 and Qt6
3153
- Updated: Documentation, added usage level for configuration options. See
@@ -35,6 +57,7 @@ humans](https://keepachangelog.com).
3557
- Fixed: Various edge cases remediated, esp. #167 and #169, thanks to all
3658
reporters!
3759

60+
3861
### Version 3.17.0 (2025-05-04)
3962

4063
- Changed: Handling of relative path in configuration options adapted to enable

docs/CLIHELP.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,10 @@ From Skyscraper 3.5.0 all command-line options that change the scraping behaviou
452452

453453
To enable multiple flags separate them by commas (eg. `--flags FLAG1,FLAG2`) or apply `--flags` option multiple times.
454454

455+
#### backcovers
456+
457+
By default Skyscraper doesn't scrape and cache game backcovers resources because not all scraping sites provide this data and also only some frontends support a boxback display. You can enable it by using this flag. Consider setting this in [`config.ini`](CONFIGINI.md#backcovers) instead.
458+
455459
#### fanarts
456460

457461
By default Skyscraper doesn't scrape and cache game fanart resources because not all scraping sites provide this data and also only some frontends support fanart display. You can enable it by using this flag. Consider setting this in [`config.ini`](CONFIGINI.md#fanarts) instead.
@@ -478,7 +482,7 @@ This is an epheremal flag and has only an effect when used with the ES-DE fronte
478482

479483
!!! warning "Epheremal Flag for ES-DE"
480484

481-
Once the miximage of ES-DE feature has been released, this flag may be removed again from Skyscraper.
485+
Once the miximage of ES-DE feature has been released, this flag may be removed again from Skyscraper and the logic will be adapted to match the ES-DE behaviour.
482486

483487
#### nobrackets
484488

@@ -552,6 +556,10 @@ This flag is _only_ relevant when generating a game list (by leaving out the `-s
552556

553557
Only relevant when generating an EmulationStation, a Retrobat or a Pegasus game list, with the `-f` option. Emulationstation is the default frontend when the `-f` option is left out. The `relative` flag forces the rom and any media paths (if they are the same as the input folder) inside the game list to be relative to the rom input folder. Consider setting this in [`config.ini`](CONFIGINI.md#relativepaths) instead.
554558

559+
#### skipexistingbackcovers
560+
561+
When generating gamelists, skip copying backcovers that already exist in the media output folder.
562+
555563
#### skipexistingcovers
556564

557565
When generating gamelists, skip processing covers that already exist in the media output folder.
@@ -620,13 +628,12 @@ Some scraping modules use file checksums to identify the game in their databases
620628

621629
#### videos
622630

623-
By default Skyscraper doesn't scrape and cache video resources because of the significant disk space required to save them. You can enable videos using this flag. Consider setting this in [`config.ini`](CONFIGINI.md#videos) instead.
631+
By default Skyscraper doesn't scrape and cache video resources because of the significant disk space required to save them. You can enable videos using this flag, also explicitly set this flag to output videos for the frontend/gamelist. Consider setting this in [`config.ini`](CONFIGINI.md#videos) instead.
624632

625633
**Example(s)**
626634

627635
```
628-
Skyscraper -p amiga --flags forcefilename,nosubdirs,skipexistingwheels
629-
Skyscraper -p nes --flags videos,nomarquees
636+
Skyscraper -p nes --flags videos
630637
```
631638

632639
### --gamelistfilename &lt;FILENAME&gt;
@@ -763,9 +770,11 @@ Skyscraper has a resource cache which works just like the browser cache in Firef
763770

764771
You can force all data to be refetched from the servers by setting this option, effectively updating the cached data with new data from the source.
765772

773+
If you provide one or more game filenames on the command line, the refresh flag is automatically set.
774+
766775
!!! note
767776

768-
_Only_ use this option if you know data has changed for several roms at the source. Otherwise you are hammering the servers for no reason.
777+
_Only_ use this option if you know data has changed for several roms at the source. Otherwise you are hammering online servers for no reason.
769778

770779
**Example(s)**
771780

docs/CONFIGINI.md

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ This is an alphabetical index of all configuration options their usage level and
7373
| [addExtensions](CONFIGINI.md#addextensions) | Advanced | Y | Y | | |
7474
| [addFolders](CONFIGINI.md#addfolders) | Expert | | | Y | |
7575
| [artworkXml](CONFIGINI.md#artworkxml) | Advanced | Y | Y | Y | |
76+
| [backcovers](CONFIGINI.md#backcovers) | Basic | Y | | | |
7677
| [brackets](CONFIGINI.md#brackets) | Basic | Y | Y | Y | |
7778
| [cacheCovers](CONFIGINI.md#cachecovers) | Basic | Y | Y | | Y |
7879
| [cacheFolder](CONFIGINI.md#cachefolder) | Basic | Y | Y | | |
@@ -1098,6 +1099,23 @@ Allowed in sections: Only for frontends `[emulationstation]`, `[esde]` or `[retr
10981099

10991100
---
11001101

1102+
#### backcovers
1103+
1104+
By default Skyscraper doesn't scrape and cache game backcover resources because
1105+
not all scraping sites provide this data and also only some frontends support
1106+
the display of the cover backside. If enabled Skyscraper will collect game
1107+
manuals for the scraping modules that provide this data. For the frontends ES-DE
1108+
and Batocera no further option must be set to enable the output of the boxback
1109+
in the gamelist and into the appropriate folder during gamelist creation.
1110+
You may want to review and [adjust the cache
1111+
priorities](CACHE.md#resource-and-scraping-module-priorities) for the fanart
1112+
selection when data from several scraping modules is present in your cache.
1113+
1114+
Default value: false
1115+
Allowed in sections: `[main]`
1116+
1117+
---
1118+
11011119
#### fanarts
11021120

11031121
By default Skyscraper doesn't scrape and cache game fanart resources because not
@@ -1107,10 +1125,13 @@ modules that provide this data. For the frontends ES-DE and Batocera no further
11071125
option must be set to enable the output of fanart in the gamelist and into the
11081126
appropriate folder during gamelist creation. For other EmulationStation forks
11091127
where themes support the display of fanart, see also option
1110-
[gameListVariants](CONFIGINI.md#gamelistvariants).
1128+
[gameListVariants](CONFIGINI.md#gamelistvariants).
1129+
You may want to review and [adjust the cache
1130+
priorities](CACHE.md#resource-and-scraping-module-priorities) for the fanart
1131+
selection when data from several scraping modules is present in your cache.
11111132

11121133
Default value: false
1113-
Allowed in sections: `[main]`, `[<PLATFORM>]`
1134+
Allowed in sections: `[main]`
11141135

11151136
---
11161137

@@ -1124,6 +1145,9 @@ and Batocera no further option must be set to enable the output of the PDF
11241145
manuals to the appropriate folder during gamelist creation. For other
11251146
EmulationStation forks which support PDF manual display, see also option
11261147
[gameListVariants](CONFIGINI.md#gamelistvariants).
1148+
You may want to review and [adjust the cache
1149+
priorities](CACHE.md#resource-and-scraping-module-priorities) for the fanart
1150+
selection when data from several scraping modules is present in your cache.
11271151

11281152
Default value: false
11291153
Allowed in sections: `[main]`, `[<PLATFORM>]`

docs/FAQ.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,11 @@ And now for the questions (with answers)...
8383
Yes, from Skyscraper 3.18 onwards. The cause is that Screenscraper is the only scraping module which by default passes the extension to the server during the scraping information along with other information (checksums, filesize).
8484
When scraping a set of games use the [`--searchstem`](CLIHELP.md#-searchstem-extension) option, i.e. `--searchstem '*.<customext>'`, that way Skyscraper will explicitly query only for the filename stem (=filename without file extension) of the game file. Example: Let's assume you are using `*.desktop` as custom game file extension, then the command would be `Skyscraper -s screenscraper -p <platform> --searchstem '*.desktop'`. You may also use the config file [counterpart](CONFIGINI.md#searchstem). On top you may add `--verbosity 3` to investigate what search term is presented to the Screenscraper server.
8585
However, when querying for a single game with [`--query`](CLIHELP.md#-query-string) you don't have to specify this custom extension.
86+
87+
??? Question "I have been enrolled on IGDB, but whenever I try to scrape I get a HTTP 401 (unauthorized). How to resolve this?"
88+
89+
It may be caused by a system without a realtime clock (like Raspberry Pi) or on systems with a highly unsynchronized clock. As the IGDB token lifetime is calculated on the system time, this might be the culprit. You may remove the file `~/.skyscraper/igdbToken.dat` and try again to scrape with IGDB.
90+
91+
??? Question "I have scraped manuals/fanarts/backcovers from different sources, but in the gamelist/frontend I only get the most recent scraped. How can I correct this?"
92+
93+
Most likely the `priorities.xml` file is missing these entries for the platform. You can find an example for manual, fanart and backcover cache types and their priority of selection at the [cache documentation](CACHE.md#resource-and-scraping module-priorities) and at the end of the the `~/.skyscraper/priorities.xml.example` file. Once you have added these entries and adjusted them your preferences you will get the media outputted in that order instead of the most recent scraped media.

0 commit comments

Comments
 (0)