splatnet2statink で戦績を保存したい。
かれこれ2ヶ月くらいスプラトゥーン2から離れている takuya ですこんばんは。
2020年のコロナウイルス感染症騒動で、ちょっと暇になってしまったので、スプラトゥーンを復活しようと思っています。リングフィットアドベンチャーも届いたのですが、スプラトゥーンには中毒性があって面白いですよね。
しばらく使ってなかったので iksm_sessionが切れてしまってので、再発行と自動取得をまとめてsystemd で作り直します。
戦績を保存する。
splatnet2statinkを使って、戦績をstat.inkに保存していきます。
ソースコードの取得
ソースコードを取ってきます。
git clone git@github.com:frozenpandaman/splatnet2statink.git cd splatnet2statink
これでsplatoon2 のデータを扱えます。
python の環境を作ります。
最初に pipenv 環境を作ります。 pipenv 環境がない場合は pythonとpip を用意して pip install pipenv
をしておきます。
cd splatnet2statink export PIPENV_VENV_IN_PROJECT=1 pipenv install pipenv shell
pipenv 環境下で作業をします。
最初に依存モジュールを用意しておきます。
(splatnet2statink) pip install -r requirements.txt
セッションキーを用意します。
初回起動でセッションキーを登録します。
stat.ink のセッションキーを用意しておいて、初回起動で登録します。
(splatnet2statink) ./splatnet2statink.py splatnet2statink v1.5.4 Generating new config file. stat.ink API key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Default locale is en-US. Press Enter to accept, or enter your own (see readme for list). ja-JP Pulling data from online... Blank cookie.
続けて、iksm_session を取り出します。
httpsから始まる URLが表示されるので、これを MacOS Safariに貼り付けます。 (最新版の Chromeではリダイレクト先がローカルになるのでエラーになりました。)
Make sure you have fully read the "Cookie generation" section of the readme before proceeding. To manually input a cookie instead, enter "skip" at the prompt below. Navigate to this URL in your browser: https://accounts.nintendo.com/connect/1.0.0/authorize?state=XXXXXXXXXXXXXXXXXXXXe_challenge_method=S256&theme=login_form Log in, right click the "Select this account" button, copy the link address, and paste it below:
Safariでログインして アドレスをコピー
アドレスをコピーして コンソールに貼り付けます。
PCならリンクを右クリック
貼り付けたらアップロードが始まる。
config.txt が作成されて アップロードが出来るようになる。
Log in, right click the "Select this account" button, copy the link address, and paste it below: npf71b963c1b7b6d119:/XXXXXXXXXXXXXXXXXXXXXXXXyTTNw-B Wrote session_token to config.txt. Attempting to generate new cookie... Wrote iksm_session cookie for たくや to config.txt.
config.txt は重要
config.txtに保存されたセッションキーで認証しているので、config.txtをバックアップしておく。
systemd に登録する。
systemd で定期的に、splatoon2 の戦歴とサーモンランの履歴を取り出して保存します。
サービスファイル splatnet2ink.service ファイルを作成
モニタリングを起動して放置していると、なぜだか上手くイカないので、1時間に一回起動して戦歴をチェックする。
ガチマッチもレギュラーマッチもどう頑張っても1時間に50件の保存上限を超えるプレイをできないので、これでいける *1
[Unit] Description=Splattoon splatnet2ink [Service] WorkingDirectory=/home/takuya/.splatnet2statink ExecStartPre=/home/takuya/.splatnet2statink/.venv/bin/python /home/takuya/.splatnet2statink/.venv/bin/pip install --upgrade pip ExecStartPre=/home/takuya/.splatnet2statink/.venv/bin/python /home/takuya/.splatnet2statink/.venv/bin/pip install --upgrade -r /home/takuya/.splatnet2statink/requirements.txt ExecStartPre=/usr/bin/git pull ExecStart=/home/takuya/.splatnet2statink/.venv/bin/python /home/takuya/.splatnet2statink/splatnet2statink.py -r ExecStartPost=/home/takuya/.splatnet2statink/.venv/bin/python /home/takuya/.splatnet2statink/splatnet2statink.py -r --salmon #Restart=always #RuntimeMaxSec=600 ; User=takuya ; Group=takuya [Install] WantedBy=default.target
タイマーファイル splatnet2ink.timerを作成しておく
[Unit] Description=Splattoon splatnet2ink timer [Timer] OnCalendar= hourly RandomizedDelaySec=10 Unit = splatnet2statink.service [Install] WantedBy=default.target
systemd に登録する。(ユーザーごとの systemd )
ユーザー空間なら、次のところにファイルを作って起動する。
mkdir -p ~/.config/systemd/user/ ## または mkdir -p /etc/systemd/user/
systemdをリロードして unit を登録
systemctl --user daemon-reload
起動してチェック
systemctl --user start splatnet2statink.service systemctl --user status splatnet2statink.service systemctl --user start splatnet2statink.timer systemctl --user status splatnet2statink.service
有効化
systemctl --user enable splatnet2statink.service systemctl --user enable splatnet2statink.timer
戦歴があるとモチベーション維持に良い。
戦歴をずっと眺めることで、反省点がわかる。
なにより成績が向上しているとモチベーションアップに役立つ。
動画を撮影したりすると動画撮影の検索インデックスとしても使える。便利。
2022-07-20
splatoon のika log の更新は、毎日起動してないと、数日でセッションが切れてしまうので注意。
参考資料
イカ参考資料です。
ユーザー毎の systemd を使ってシステム全体設定と個人用設定を分ける。 - それマグで!
https://github.com/frozenpandaman/splatnet2statink#cookie-generation
https://tkgstrator.work/?p=26857
【簡易版】Windowsだけでsplatnet2statinkを使ってスプラトゥーン2の戦績をstat.inkに自動で登録する【導入/利用編】 – バニラソルト
*1: 複数台のニンテンドースイッチで同一アカウントでプレイしない限り大丈夫