それマグで!

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

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

splatoon3 のデータを s3sで stat.ink に定期的にアップロード

stat.ink にバトル結果を自動的にアップロード

バトル結果をアーカイブ保存できて便利です、戦歴を見直して対策を立てられます。

コードの取得

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

実行準備 / python 環境の準備

cd s3s
export PIPENV_VENV_IN_PROJECT=1
pipenv install 
pipenv shell 

pipenv 環境下で作業をします。

最初に依存モジュールを用意しておきます。

(s3s) pip install -r requirements.txt

APIキーを用意します。

Stat.inkにデータを投稿するためのAPIキーを、Stat.inkから取得します。

https://cdn-ak.f.st-hatena.com/images/fotolife/t/takuya_1st/20200409/20200409045324.png

ニンテンドーAPIセッションキーを取得します。

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

((s3s) ) takuya@:s3s$ ./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: XXXXXXXXXXXXhdAqlouPGxxxxxxxxxx

言語を聞かれるので、en-USでいいと思いますが、ja-JPも使えるみたいなので指定しました。

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

リンクが表示されます。表示されたHTTPから始まるリンクをクリック

Checking if there are previously-unuploaded battles/jobs...
Blank token(s).
Please log in to your Nintendo Account to obtain your session_token.

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?state=xxxxxxxxxxxxxxx&theme=login_form

認証済みセッションを作ったら、「この人にする」を右クリックして、リンク先をコピーします。

コピーしたリンク先のURL App Schema をコピーして貼り付けます。

Log in, right click the "Select this account" button, copy the link address, and paste it below:
npf71b963c1b7b6d119://auth#session_state=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3VV2ftKJ7lNVxxxxxxxxxxxxx

これで準備は完了です。

初回起動後に、自動的にアップロードが始まります。

次回以降の起動の手順

起動手順は、次の通りになります。これをCron/Systemdなどに登録しておけばいいと思います。

cd /home/takuya/.s3s
## pyenv init 
HOME=/home/takuya
source ~/.bashrc
eval "$( /home/takuya/.pyenv/bin/pyenv  init -)"
export PATH=/home/takuya/.pyenv/shims/:$PATH

# update 
echo update ....................
git pull 
# update pip
pipenv run pip install --upgrade pip
pipenv run pip install -r requirements.txt  --upgrade
# upload battle results
echo uploading .........
echo ''
pipenv run python ./s3s.py -r -t
pipenv run python ./s3s.py -r
pipenv run python ./s3s.py -osr

systemd の例

サービスユニット

s3s.service

[Unit]
Description=Splattoon s3s

[Service]
WorkingDirectory=/home/takuya/.s3s
ExecStartPre=/usr/bin/git pull
ExecStartPre=/home/takuya/.s3s/.venv/bin/python pip install --upgrade pip
ExecStartPre=/home/takuya/.s3s/.venv/bin/python bin/pip install --upgrade -r  requirements.txt
ExecStart=/home/takuya/.s3s/.venv/bin/python    s3s.py -r
ExecStartPost=/home/takuya/.s3s/.venv/bin/python    s3s.py -r

#Restart=always
#RuntimeMaxSec=600
; User=takuya
; Group=takuya
[Install]
WantedBy=default.target

タイマーユニット s3s.timer タイマーファイル splatnet2ink.timerを作成しておく

[Unit]
Description=Splattoon s3s schedule timer

[Timer]
OnCalendar= hourly
RandomizedDelaySec=10
Unit = s3s.service

[Install]
WantedBy=default.target

ユーザー空間なら、次のところにファイルを作って起動する。

## ユーザ向け
mkdir -p ~/.config/systemd/user/
## または システム
mkdir -p /etc/systemd/user/

systemdをリロードして ユーザー unit を登録

systemctl --user daemon-reload

起動してチェック

systemctl --user status s3s.service
systemctl --user start s3s.timer
systemctl --user status s3s.service

有効化

systemctl --user enable s3s.service
systemctl --user enable s3s.timer
systemctl --user start s3s.timer

サーモンがない。

stat.ink のサーモンランのアップロードが無いの悲しい

バンカラ・マッチはバグが多いので年末まではやらないつもりなので、サーモンランしかやってない。だけどサーモンランの記録を残せない。悲しい。

定期実行時

git のマージの戦略が未設定だと、警告が出てくる。

hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only

ローカルにクローンしたファイルを触らないのだからマージが必要ない。 その理由からff を選んでおいた。

git config pull.ff only