Splatoon3の戦績をstat.inkにアップロードして自分の戦績を分析出来る環境を整える方法

photo of person typing on computer keyboard

Splatoon3の勝敗データを収集・保存・解析を行っているサイトstat.inkに自身の戦績データを登録することで、自分の戦績データの分析が行いやすくなります。

stat.inkには、s3sというコマンドラインツールを用いて戦績をアップロードしますが、こちらの導入方法とMac OSでのサービス登録方法について手順を解説します。

目次

実行環境

  • macOS Ventura 13.0
  • Python 3.9.6

s3sのセットアップ

stat.inkのアカウントの作成

もしstat.inkのアカウント作成がまだの方は、以下からアカウントの作成を行ってください。

https://stat.ink/

s3sのダウンロードとインストール

cd ~/
git clone https://github.com/frozenpandaman/s3s

もしgit clone で以下のエラーが表示された場合、xcodeのcommand line developer toolsをインストールします。

% git clone https://github.com/frozenpandaman/s3s
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
% xcode-select --install
xcode-select: note: install requested for command line developer tools

改めてgit cloneを実施すると成功します。

% git clone https://github.com/frozenpandaman/s3s
Cloning into 's3s'...
remote: Enumerating objects: 347, done.
remote: Counting objects: 100% (210/210), done.
remote: Compressing objects: 100% (54/54), done.
remote: Total 347 (delta 189), reused 171 (delta 156), pack-reused 137
Receiving objects: 100% (347/347), 109.62 KiB | 2.28 MiB/s, done.
Resolving deltas: 100% (215/215), done.

s3sのインストールを行います。

cd s3s
pip3 install -r requirements.txt

pipの最新版を使うよう警告が表示されますが今回は無視します。

WARNING: You are using pip version 21.2.4; however, version 22.3 is available.
You should consider upgrading via the '/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip' command.

s3sの初期設定と初回実行

初回実行時には以下の3点の初期設定と過去100戦のstat.inkへのアップロードが行われます。

  • ロケールの設定
  • stat.inkのAPIキーの保存
  • ニンテンドーオンラインのAPIキーの保存

以下のコマンドを実行します。

python3 s3s.py -r

stat.inkのAPIキー入力を促されます。

Generating new config file. s3s v0.1.11 » While s3s is in beta, please update the script regularly via `git pull`. stat.ink API key:

stat.inkにアクセスし、上部のメニューからプロフィールと設定をクリックします。

プロフィールと設定画面で、APIキーを表示ボタンをクリックします。表示されたAPIキーをコピーします。

取得したAPIキーをターミナルに入力してEnterキーを押下します。

次にロケールの入力を促されます。英語で構わない場合はen-USでエンターキーを押下します。日本語にしたい場合はja-JPを入力します。ロケールの変更による違いは良くわかりませんでした。

Default locale is en-US. Press Enter to accept, or enter your own (see readme for list).
en-US

ロケールの一覧は以下の通りです。

language_list = [
				"de-DE", "en-GB", "en-US", "es-ES", "es-MX", "fr-CA", "fr-FR",
				"it-IT", "ja-JP", "ko-KR", "nl-NL", "ru-RU", "zh-CN", "zh-TW"
]

ニンテンドーオンラインのAPIキーの取得を促されます。

Checking if there are previously-unuploaded battles/jobs...

Make sure you have fully read the "Token generation" section of the readme before proceeding. To manually input a token instead, enter "skip" at the prompt below.

Navigate to this URL in your browser:
https://accounts.nintendo.com/connect/1.0.0/authorize?[...省略...]
Log in, right click the "Select this account" button, copy the link address, and paste it below:

Navigate to this URL in your browser:以下に表示されているURLにアクセスし、この人にするのボタンのリンクのアドレスを右クリック、コピーしてターミナルに貼り付けます。

コピーしたURLをターミナルに貼り付けて、Enterキーを押下します。

Wrote session_token to config.txt.
Attempting to generate new gtoken and bulletToken...
Wrote tokens for [ニンテンドーアカウント名] to config.txt.

Checks for unuploaded battles and uploads any that are found.

過去の戦績をチェックし、過去最大100件分のバトルの戦績がstat.inkにアップロードされます。アップロードが完了したらstat.inkの自分のSplatoon3の戦績ページを確認してください。戦績がアップロードされていれば成功です。

コマンドライン引数

$ python s3s.py [-M [N]] [-r] [-nsr | -osr]
The -M flag runs the script in monitoring mode, uploading new battles/jobs as you play, checking for new results every N seconds; if no N is provided, it defaults to 300 (5 minutes).

The -r flag checks for & uploads any battles/jobs present on SplatNet 3 that haven't yet been uploaded.

The -nsr flag makes Salmon Run jobs not be monitored/uploaded. Use this if you're playing Lobby modes only.

The -osr flag, conversely, makes only Salmon Run jobs be monitored/uploaded. Use this if you're playing at Grizzco only.
フラグ説明
-M [N]監視モード。定期的に未アップロードの戦績があるかチェックし、未アップロードの戦績があればアップロードします。Nはモニタリングの間隔を秒で指定します。
-rstat.inkに未アップロードの戦績のみをアップロードします。
-nsrサーモンランの戦績を監視・アップロードしません。
-osrサーモンランの戦績のみを監視・アップロードします。

以下の例は、1時間ごとに未アップロードの戦績があるかチェックし、未アップロードの戦績をstat.inkにアップロードします。

python3 s3s.py -M 3600 -r

自動化

Macを再起動する度にコマンド python3 s3s.py -M 3600 -rを実行しないといけないのは煩わしいため、Macの起動時に自動的にサービスとして動作するように設定します。ここではMac OS Venturaでの設定方法を記載しますので、WindowsやLinuxをお使いの方はそれぞれのOSの設定方法をご確認ください。

Macにおけるサービス登録

Macではlaunchdがシステム起動時に自動的に起動するサービスの管理を行います。

ユーザー管理のサービスは以下の手順で行います。

  • 起動するサービスの設定ファイルhogehoge.plistを作成する。
  • ~/Library/LaunchAgents配下にhogehoge.plistを配置する。
  • hogehoge.plistの所有者・権限を設定する。
  • launchctl load hogehoge.plistでサービスを登録する。

サービスの設定ファイル作成

stat-inkへの戦績アップロード用サービスの設定ファイルを作成します。

  • s3sをOS起動時に実行し、1時間ごとに戦績を取得しアップロードする。
  • 24時間ごとに再起動を行う。
  • サービス終了時には再起動する。(実際には再起動するタイミングない)
% cd ~/Library/LaunchAgents/
% vi s3s-stat-ink-uploader.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>s3s-stat-ink-uploader</string>
        <key>ProgramArguments</key>
        <array>
                <string>python3</string>
                <string>/Users/[ユーザー名]/s3s/s3s.py -M 3600 -r</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/Users/[ユーザー名]/s3s</string>
        <key>StartInterval</key>
        <integer>86400</integer>
    </dict>
</plist>

s3s自体のアップデート用サービスの設定ファイルを作成します。

  • s3sをOS起動時に実行し、1時間ごとに戦績を取得しアップロードする。
  • 24時間ごとに再起動を行う。
  • サービス終了時には再起動する。(実際には再起動するタイミングない)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>s3s-updater</string>
        <key>ProgramArguments</key>
        <array>
                <string>git pull --no-edit --ff-only</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <false/>
        <key>WorkingDirectory</key>
        <string>/Users/[ユーザー名]/s3s</string>
        <key>StartInterval</key>
        <integer>86400</integer>
    </dict>
</plist>

文法チェック

文法のチェックを行います。キー名などが誤っている場合でもXMLのスキーム的に問題がない場合は、チェックにひっかからずOKとなります。そのため、後のlaunchctl load hogehoge.plistでエラーが出た場合はキー名間違いなどの可能性を疑ってください。

% plutil -lint s3s*plist
s3s-stat-ink-uploader.plist: OK
s3s-updater.plist: OK

所有者と権限の変更

所有者と権限を設定します。

chmod [ユーザー名]:staff s3s*.plist
chown 664 s3s*.plist

サービス登録と確認

サービスを登録します。

launchctl load s3s-stat-ink-uploader.plist
launchctl load s3s-updater.plist

サービスの登録状況を確認します。

% launchctl list | grep s3s
-	78	s3s-updater
-	2	s3s-stat-ink-uploader

これで、Macの起動とともに、s3sの戦績自動アップロードとs3s自身のアップデートが自動で定期実行されるようになりました。

ジョブの開始

% launchctl load ~/Library/LaunchAgents/xxx.plist
% launchctl start ジョブラベル

ジョブの停止

% launchctl unload ~/Library/LaunchAgents/xxx.plist

ジョブの再起動

% launchctl ジョブラベル

plistファイルの修正内容の反映

xxx.plistを修正後、stopで再起動してもxxx.plistの修正内容は反映されない。一度unloadして、loadする必要がある。

% launchctl unload ジョブラベル
% launchctl load ~/Library/LaunchAgents/xxx.plist

参考

よかったらシェアしてね!
目次