GitHunt
SP

spacemeowx2/s3si.ts

Export your battles from SplatNet to https://stat.ink

s3si.ts

Build status

Export your battles from SplatNet to stat.ink and Splashcat.

If you have used s3s, please see here.

Usage

  1. Install Deno 2

  2. Run
    deno run -Ar https://raw.githubusercontent.com/spacemeowx2/s3si.ts/main/s3si.ts [options]

Options:
    --profile-path <path>, -p    Path to config file (default: ./profile.json)
    --exporter <exporter>, -e    Exporter list to use (default: stat.ink)
                                 Multiple exporters can be separated by commas
                                 (e.g. "stat.ink,file,splashcat")
    --list-method                When set to "latest", the latest 50 matches will be obtained.
                                 When set to "all", matches of all modes will be obtained with a maximum of 250 matches (5 modes x 50 matches).
                                 When set to "auto", the latest 50 matches will be obtained. If 50 matches have not been uploaded yet, matches will be obtained from the list of all modes.
                                 "auto" is the default setting.
    --no-progress, -n            Disable progress bar
    --monitor, -m                Monitor mode
    --skip-mode <mode>, -s       Skip mode (default: none)
                                 Multiple modes to skip can be separated by commas
                                 (e.g. "vs,coop,sideorder")
    --with-summary               Include summary in the output
    --help                       Show this help message and exit
    --nxapi-presence             Extends monitoring mode to use Nintendo Switch presence from nxapi
  1. If it's your first time running this, follow the instructions to login to
    Nintendo Account. Your token will be saved to profile.json for future use.
  • If you want to use a different profile, use -p to specify the path to the
    profile file.

Splashcat Notes

Due to limitations with SplatNet 3 data, Splashcat requires battles uploaded to
use en-US (set with userLang). Splashcat will localize most parts of battle
results into the user's language when displayed.

Track your rank

  • Run
    deno run -Ar https://raw.githubusercontent.com/spacemeowx2/s3si.ts/main/initRank.ts
    to initialize your rank data. (You can also use -p to specify the path to
    the profile file.)

  • Then enter your current rank and rank point. For example: S+0,300. And the
    rank will be saved in the profile.json.

  • After that, run s3si.ts, the rank point will be reported to stat.ink.

profile.json

{
  // cacheDir is the directory to store cache files
  "cacheDir": "./cache",
  // don't change this if you don't know what it is
  "fGen": "https://api.imink.app/f",
  // if you run with -e file, this is the directory to store exported files
  "fileExportPath": "./export",
  // the interval to check for new battles in monitor mode
  "monitorInterval": 500,
  // login token
  "loginState": {
    "sessionToken": "...",
    "gToken": "...",
    "bulletToken": "..."
  },
  // userLang will effect the language of the exported games to stat.ink
  "userLang": "zh-CN",
  "userCountry": "JP",
  "statInkApiKey": "...",
  "splashcatApiKey": "..."
}

Migrate from s3s

If you have used s3s before, you can migrate your data to s3si.ts by
creating a profile.json file with the following contents:

{
  "loginState": {
    "sessionToken": "<session_token in your s3s' config.txt>"
  },
  "statInkApiKey": "<your stat.ink API key>"
}

Then run s3si.ts, and it will work without login prompt.

Credits

Languages

TypeScript99.4%Dockerfile0.6%
GNU General Public License v3.0
Created October 18, 2022
Updated February 25, 2026
spacemeowx2/s3si.ts | GitHunt