回心誌

日々是回心

【Python】イカリング2APIから取得した戦績JSONデータをstat.inkにアップロードする

【前提】

イカリング2から戦績データ(JSON)を取得済みである

イカリング2から戦績データを取得する方法は、以下を参照のこと。
[Python]イカリング2のJsonを取得してみた - Qiita


・mitmproxy経由でiksm_sessionを取得済みである
・stati.inkに登録済みで、APIキーを取得済みである

【結論から言うと】

まず、splatnet2statinkを拾って来ます。

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


初回起動して、設定ファイルを作ります。
なお、python2系で動かしてください。

python splatnet2statink/splanet2statink.py

iksm_session、APIキー、言語を聞かれるので、答えます。


こんな感じのシェルスクリプトを作ります。

files="../jsonfiles/*.json"
for filepath in $files; do
    echo -e "1\n" | python splatnet2statink.py -i $filepath
done

files="../jsonfiles/*.json"のところには、イカリング2から拾って来た戦績JSONデータを格納するディレクトリを指定します。


作ったシェルスクリプトを動かします。


以下は、手を動かしていろいろやってたときのログ。

続きを読む

stat.inkのAPIをpythonから使ってみる

stat.inkというサイトがある。
stat.ink

スプラトゥーンスプラトゥーン2の勝敗データを収集しており、さらにサイトに登録されたデータはAPIを利用して取得することができるそうだ。


以下を参考に、ひとまず戦績データを1件とってくる。

stat.ink/get-battle.md at master · fetus-hina/stat.ink · GitHub

コードは下の方に貼っておいた。
なお、python3。

とってきたJSONファイルはbattle構造体という形式になっているそうだが、battle構造体の説明に辿り着けない(リンク切れ?)

ひとまず落としてきたJSONファイルをチラ見してみた。
 ・ステージ、ルール、勝敗、プレイヤーごとのキル、デス、キルアシスト、ブキ、ウデマエの情報はあり。
 ・プレイヤーごとのギアのデータは無い


今後やりたいこととしては、ブキ編成ごとの勝率を分析したい。けど、難しそう……。
簡単なところからはじめてみようかな。
例えば、編成事故とよく言われるチャージャー2人の場合の勝率を見てみるとか。

import json
import http.client
import urllib.parse
from urllib.request import build_opener

host = "stat.ink"
path = "/api/v2/battle"

# クエリパラメータを指定
params = {'count': 1}

# jsonをファイルに書き出す際のファイルパス
outfilepath = "stat_ink_test.json"


def get_stat_ink():
    conn = http.client.HTTPSConnection(host)
    params_url = urllib.parse.urlencode(params)
    conn.request("GET", path + "?%s" % params_url)
    response = conn.getresponse()
    return response

if __name__ == '__main__':
    response = get_stat_ink()
    res_json = json.loads(response.read().decode("utf-8"))
    print(json.dumps(res_json, indent=4))

    with open(outfilepath, 'w') as f:
        json.dump(res_json, f, ensure_ascii=False, indent=4)