【Splatoon3】s3sを立てて戦績をstat.inkに自動アップする
※サードパーティのソフトウェアを使用します。本記事の内容を実行する場合は自己責任でお願いします。
みなさん、イカしてますか? ようやくS+0に上がった響音カゲです。
スプラトゥーン3の戦績分析って楽しいですよね。自分のその日の動きが数字で見えるので、試合動画と一緒に見返すとすごく勉強になります。
スプラトゥーンの戦績ログを管理できる stat.ink というサービスに自動で戦績をアップロードできる s3s というスクリプトが公開されていたので、Ubuntuサーバー上にserviceとしてセットアップするまでのやり方を解説します。
実行環境
ソフトウェア
- s3s@2d59ff653c (2022/11/01 12:44(JST)時点での最新版)
サーバー環境
- さくらのVPS 1G
- Ubuntu Server 22.04
- Python 3.10.6 (apt版)
色々動かしてるサーバーに突っ込みました。ただのPythonスクリプトなので、GCPの無料枠や、512MB系のVPSやRaspberry Piでも十分動くと思います。
クライアント環境
- Ubuntu 22.04 (WSL2 on Windows11 Home)
セットアップ
Python3とGitの環境入れてからpipで依存関係を入れます。
その後、APIキーを設定します。
必要なもののインストールとダウンロード
pwd # /home/[ユーザー名]/src で作業します
sudo apt update
sudo apt install -y git python3 python3-pip
git clone https://github.com/frozenpandaman/s3s
cd s3s
pip3 install -r requirements.txt
APIキーの設定
s3sは以下の2つの設定が必要です🦑
- stat.inkのAPIキー
- ニンテンドーネットワークのAPIキー
初回起動時に設定画面が出てきます。
python3 s3s.py -r
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キーは「プロフィールと設定」から取得できます。
ロケール(翻訳)を入れろと出てくるので、そのままの英語でもいいですが一応ja-JPを入れておきます。
Default locale is en-US. Press Enter to accept, or enter your own (see readme for list).
ja-JP
ロケール一覧はイカの通り。831行目付近にあります。
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:
URLにアクセスし、「この人にする」を右クリックしてから「リンクのアドレスをコピー」して端末に貼り付けます。
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.
戦績のアップロードが始まったら、しばらくしてからstat.inkの自分のページを見てみましょう。
戦績がアップロードされていれば成功です!
オプション(フラグ)について
$ python3 s3s.py [-M [N]] [-r] [-nsr | -osr] [-o] [-i FILE FILE] [-t]
フラグ | 説明 |
---|---|
-M [N] |
定期的に戦績をアップロードします。デフォルトでは300秒(5分)ごとになっています。 |
-r |
stat.inkに未アップロードの戦績かどうかをチェックしてからアップロードします。 |
-nsr |
サーモンランの戦績を取得、アップロードしません。 |
-osr |
サーモンランの戦績だけを取得し、アップロードします。 |
-o |
戦績をローカルファイルに出力します。 |
-i FILE FILE |
ローカルファイルのリザルトをアップロードします。-i results.json overview.json の順でアップロードしてください。 |
-t |
戦績を取得だけしてアップロードしません(いわゆるdry run) |
--help |
ヘルプを表示します。 |
サービス化する
ローカルで動かす場合は python3 s3s.py -M 3600 -r
とかでいいのですが、サーバーで常時動かす場合はサービス化すると楽です。
crontabでもいいんですがsystemdにserviceとして登録したほうが、動かしたり止めたりしやすいしログも見やすいのでおすすめです。
sudo vim /etc/systemd/system/s3s.service
とかでserviceファイルを作って編集します。
1時間おきにデータ更新、1日おきに再起動、落ちたら30分後に再起動ぐらいの負荷にしてあります。
[Unit]
Description = Stat.ink uploader
[Service]
Type = simple
Restart = always
RestartSec = 30min
RuntimeMaxSec = 86400
ExecStart = /usr/bin/python3 /home/[ユーザー名]/src/s3s/s3s.py -M 3600 -r
User = [ユーザー名]
WorkingDirectory = /home/[ユーザー名]/src/s3s
[Install]
WantedBy = multi-user.target
s3sには結構頻繁に仕様変更が入ってるので、ついでに git pull
を自動でやってくれる、自動更新用のサービスファイルも作っちゃいましょう。
sudo vim /etc/systemd/system/s3s-update.service
とします。
[Unit]
Description = s3s updater
[Service]
Type = oneshot
Restart = no
ExecStart = /usr/bin/git pull --no-edit --ff-only
User = [ユーザー名]
WorkingDirectory = /home/[ユーザー名]/src/s3s
[Install]
WantedBy = multi-user.target
更新のタイマーも1日おきに動かしておきます。sudo vim /etc/systemd/system/s3s-update.timer
とします。
[Unit]
Description = Timer for s3s-updater
[Timer]
OnUnitActiveSec = 1day
[Install]
WantedBy = timers.target
最後に、サービスを起動します。
sudo systemctl daemon-reload
sudo systemctl start s3s-update.service # s3s自動更新のテスト
sudo systemctl status s3s-update.service # 動いてるか確認
sudo systemctl enable s3s-update.service # s3sの自動更新をオンにする
sudo systemctl enable s3s-update.timer
sudo systemctl start s3s-update.timer # timerを起動
sudo systemctl start s3s # s3sを起動する
sudo systemctl status s3s # 動いてるか確認
sudo systemctl enable s3s # s3sの自動起動をオンにする
まとめ
スプラトゥーン3の戦績を自動アップロードする方法について解説しました。
サービス書くのにもちょうどいいぐらいの難易度なので、サーバー使ってみる人には良い勉強になるかと思います。
ちなみに、私の戦績はイカのURLにあります🦑
ほぼトライストリンガー専です。たまにヒーローシューターレプリカとソイチューバーを使います。
普段はガチマをちょっとだけ回してます。ナワバリはフレンドとだけ潜ります。
もしよかったら一緒にスプラやりましょう!
それでは、イカ、よろしく~~~~🦑
Discussion
トライストリンガー使ってます。勉強になりました、ありがとうございます!
一点、上記に加えてtimerユニットの起動も必要かと思いましたがいかがでしょうか?
(
sudo systemctl status s3s-update.timer
)@takkii コメントありがとうございます! 抜けていました、修正します!