1
0
forked from Mirrors/itch-dl

Trial The Second: Make leafo happy by not murdering his servers

Drop Selenium and clicking around itch - use the API instead.
Pulls HTML5 games, is way faster, uses less resources on both ends.
This commit is contained in:
Ryszard Knop
2021-10-03 03:49:49 +02:00
parent 5d0b8e1e99
commit f86044050f
3 changed files with 243 additions and 172 deletions

View File

@@ -6,20 +6,21 @@ What you'll need:
- Python 3.8+
- `pip install -r requirements.txt`
- [chromedriver](https://chromedriver.chromium.org/downloads) somewhere in your PATH
- For site mirroring, [wget](https://www.gnu.org/software/wget/) in your PATH.
On Arch, `pacman -S python chromium python-selenium python-requests python-slugify` works.
On Arch, `pacman -S wget python python-requests python-slugify` works.
How to use this:
- Go to your jam's page, ex. https://itch.io/jam/gbcompo21 and right-click -> View Source.
- Ctrl-F for `"id":` - it should find that text once, followed by a number. Write it down.
- (It you found it multiple times, grab the one after ViewJam something something.)
- Download https://itch.io/jam/NUMBER/entries.json (replacing NUMBER with what you wrote down)
- Run the downloader: `python downloader.py entries.json`
- Generate a new API key on your user account page: https://itch.io/user/settings/api-keys
- Run the downloader: `python downloader.py --api-key <KEY> entries.json`
- Wait. This is going to take a while.
**This downloader does not (and probably will not) support HTML5-only games.** (For some of
these, you might get lucky by hitting F12 while the game loads and grabbing what's in there.)
The downloader is able to grab more or less everything you can download via the itch app.
It's expected that the downloader output will not be complete - logs are stupidly verbose and
it prints a report on successful/failed downloads, so you must manually grab whatever was not
@@ -28,3 +29,5 @@ handled for you automatically for some reason.
The downloader also grabs the entry page HTML, which usually comes with controls and such. It
does not download images, external assets and so on, just the text - if the Itch page dies,
so will most elements on those downloaded pages. Controls should survive, though.
(There's a pedantic mirroring toggle in the script, if you know what you're doing though.)