回心誌

世の中わがんね

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)