それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

splatnet2statinkで stat.inkへアップロードをsystemd で自動化する。

splatnet2statink で戦績を保存したい。

かれこれ2ヶ月くらいスプラトゥーン2から離れている takuya ですこんばんは。

2020年のコロナウイルス感染症騒動で、ちょっと暇になってしまったので、スプラトゥーンを復活しようと思っています。リングフィットアドベンチャーも届いたのですが、スプラトゥーンには中毒性があって面白いですよね。

しばらく使ってなかったので iksm_sessionが切れてしまってので、再発行と自動取得をまとめてsystemd で作り直します。

戦績を保存する。

splatnet2statinkを使って、戦績をstat.inkに保存していきます。

ソースコードの取得

ソースコードを取ってきます。

git clone git@github.com:frozenpandaman/splatnet2statink.git
cd splatnet2statink

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

セッションキーを用意します。

f:id:takuya_1st:20200409045324p:plain

初回起動でセッションキーを登録します。

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でログインして アドレスをコピー

f:id:takuya_1st:20200409045805p:plain:w240

f:id:takuya_1st:20200409045832p:plain:w240

f:id:takuya_1st:20200409050114p:plain:w240

アドレスをコピーして コンソールに貼り付けます。

貼り付けたらアップロードが始まる。

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

戦歴があるとモチベーション維持に良い。

戦歴をずっと眺めることで、反省点がわかる。

なにより成績が向上しているとモチベーションアップに役立つ。

動画を撮影したりすると動画撮影の検索インデックスとしても使える。便利。

参考資料

イカ参考資料です。

ユーザー毎の systemd を使ってシステム全体設定と個人用設定を分ける。 - それマグで!

https://github.com/frozenpandaman/splatnet2statink#cookie-generation

https://tkgstrator.work/?p=26857

【簡易版】Windowsだけでsplatnet2statinkを使ってスプラトゥーン2の戦績をstat.inkに自動で登録する【導入/利用編】 – バニラソルト

*1: 複数台のニンテンドースイッチで同一アカウントでプレイしない限り大丈夫