Skip to content

Vidi0/scratch-io

Repository files navigation

🎮 scratch-io

scratch-io is a command-line tool for managing, downloading, and launching games from itch.io.

✨ Features

  • 🔑 Authentication with the itch.io API
  • 📥 Game download with automatic extraction (zip, tar.gz, tar.xz, ...)
  • 🗃️ Management of installed games (list, move, delete, import)
  • 🚀 Game launch with smart heuristics to find the correct executable
  • 🗂️ Support for collections and game keys
  • 🖼️ Automatic cover art download

⚡ Build

Requires Rust and cargo:

git clone https://github.com/Vidi0/scratch-io.git
cd scratch-io
cargo build --release

The binary will be placed in target/release/scratch-io.

🔍 Getting a game's ID

You can find an itch.io game's ID in two ways:

  1. Append /data.json to the itch.io game page's URL in your browser. The ID will be in the id field of the JSON response.
  2. Look for a <meta> tag inside the <head> section of the game page's HTML source:
    <head>
      <meta name="itch:path" content="games/123456">
      ...
    </head>
    The number after games/ is the game ID.

🚀 Usage

Authenticate with your itch.io API key:

scratch-io auth API_KEY

Download a game by its upload ID:

scratch-io download 123456

List installed games:

scratch-io installed

Launch an installed game:

scratch-io launch 123456 --platform GAME_PLATFORM

See all options with:

scratch-io help

Warning

Due to how the itch.io API works, it is not possible to update a game in-place unless it has been packaged using butler.

To update a game that has not been packaged this way, you must remove it and install it again.

Note

Launching games is determined by heuristics, so it may not always work for every game.
If the executable for a game is not detected correctly, please leave an issue in the repository describing your case.

🛠️ Environment variables

  • SCRATCH_API_KEY: itch.io API key
  • SCRATCH_CONFIG_FILE: Custom path for the configuration file

📚 References

📝 Roadmap

  • Integration with Heroic Games Launcher:
    This project was designed with the intention of being integrated into Heroic Games Launcher.
    Note: Integration is not currently implemented.

📝 TODO

  • Read and use the itch.io manifest
    • Detect game executable from manifest actions
    • Handle game prerequisites from manifest

      Note: Prerequisites are read from the manifest, but they must be handled and installed by the user

  • Report game playtime to the itch.io servers
  • Support updating and verifying games packed with butler

📝 License

The code in this repository is released under the GPL-3.0-or-later license.

The protobuf definitions in the .proto files located in the wharf/src/protos directory were obtained from the wharf GitHub repository, so they are licensed by itch.io under the MIT license, which can be found in the LICENSE file in wharf/src/protos/LICENSE.

This project uses many third-party crates; their licenses are listed in LICENSE-THIRD-PARTY.html.

About

A command-line tool for managing, downloading, and launching games from itch.io

Resources

License

GPL-3.0, Unknown licenses found

Licenses found

GPL-3.0
LICENSE
Unknown
LICENSE-THIRD-PARTY.html

Stars

Watchers

Forks

Packages

 
 
 

Languages