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から取得します。
ニンテンドーの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