1
0
forked from Mirrors/itch-dl

Trial The Third: Start rewriting the thing

Wooo, someone wants to use this! Let's make it less embarrassing.
This commit is contained in:
Ryszard Knop
2022-05-15 02:02:45 +02:00
parent 00cced1f41
commit 4a8f88b48e
13 changed files with 676 additions and 379 deletions

View File

@@ -1,43 +1,42 @@
# itch-dl
Bulk download games from [itch.io](https://itch.io/). Currently only supports downloading game jams.
Bulk download games from [itch.io](https://itch.io/).
What you'll need:
- Python 3.8+
- `pip install -r requirements.txt`
- For site mirroring, [wget](https://www.gnu.org/software/wget/) in your PATH.
On Arch, `pacman -S wget python python-requests python-slugify` works.
- Can download game jams, browse pages (popular, newest, browse by tag...) and individual games.
- Requires Python 3.8+, grab it from PyPI: `pip install itch-dl`
- For development, use [Poetry](https://python-poetry.org/).
- Optionally requires wget for site mirroring.
How to use this:
- Log into itch.io with the account you'd like to use for downloading.
- 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> https://itch.io/jam/yourjamhere`
- Run the downloader: `itch-dl --api-key <KEY> https://itch.io/jam/yourjamhere`
- Wait. This is going to take a while.
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
handled for you automatically for some reason.
The input URL can be any "Browse" page (top, popular, newest, filtered by tags, etc) or any
game jam. The input can also be a path to a itch.io JSON file with game jam entries, or just
a list of itch.io game URLs (not browse/jam pages!) to download.
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.
**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 handled for you automatically for some reason.
(There's a pedantic site mirroring toggle in the script, if you know what you're doing. You will
need wget for that.)
The downloader also grabs the entry page HTML, which usually comes with controls and such. By
default, it does not download images, assets and so on, just the text - use `--mirror-web` to
try and download these as well. This requires `wget` to be available in your `PATH`.
## Cannot extract IDs?
## Game Jam Entries JSON
Downloader can parse and download games from a game jam entries JSON file if you want to provide it.
(The script basically automates the steps below, so if it's not able to do the same, please create
an issue!)
Downloader can parse and download games from a game jam entries JSON file if you need it.
(The script basically automates the steps below, so if it's not able to do the same, please
create an issue!)
- 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)
- (It you found it multiple times, grab the one after I.ViewJam something something.)
- Download https://itch.io/jam/ID/entries.json (replacing ID with what you wrote down).
- Feed that to `itch-dl`!