pythonでLeague of Legendsの統計データを見る【入門】

 データサイエンスに興味を持っています。
 そこで、身近なデータとしてLeagueOfLegendsというゲームの戦績を手に入れてみようと思ったわけです。
 このゲームの開発元のRiotGamesさんの開発者ページ(Riot Developer Portal)にてAPIを提供していますので、チャレンジしてみます。

 言語はpythonでやってみます。

概要:

  1. デベロッパー各々に与えられるAPIキーを開発者ページからコピーして、APIのURL末尾に「?api_key=~~~~~」とする必要があります。
  2. ユーザ情報を取得しアカウントID(数字)を取得
  3. アカウントIDから100戦分のリストを取得し、どれか1戦分のマッチIDを取得
  4. マッチIDからそのマッチの詳細を取得
  5. マッチ詳細にはそのマッチに参加した10人分のデータが入ってるので、自分のだけを抽出
  6. 今回はキル、デス、アシストのデータを円グラフにしてみました。
それでは、上記1~4まで

from urllib import request
import matplotlib.pyplot as plt
import json
%matplotlib inline

#APIKEYと、APIのURL共通部分の準備
API_KEY = 'XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXX' #APIキーはRiotのホームページでゲットしてください
name = "Sorivid"
region = "jp"
uri = "https://{0}1.api.riotgames.com".format(region) #URLの共通部分

#ユーザー情報を取得(JSON文字列からディクショナリ型へ)
uri_userInfo = "/lol/summoner/v3/summoners/by-name/{0}?api_key={1}".format(name, API_KEY)
UserInfo = uri + uri_userInfo
Filish_obj_userInfo = request.urlopen(UserInfo).read() 
dic_userInfo = json.loads(file) 

#マッチリスト情報(ロールや、何のチャンプ使ったかとか。)
accountID = dic_userInfo['accountId']
uri_matchList = uri + "/lol/match/v3/matchlists/by-account/{0}?api_key={1}".format(accountID, API_KEY) 
file_matchList = request.urlopen(uri_matchList).read()
file_matchList_py = json.loads(file_matchList)

#とりあえずひとつ、マッチの詳細を手に入れます
uri_match = uri + "/lol/match/v3/matches/{0}?api_key={1}".format(file_matchList_py['matches'][1]['gameId'], API_KEY)
file_match = request.urlopen(uri_match).read()
file_match_py = json.loads(file_match)

次は、上記5まで。
手に入れたマッチの情報から、自分のparticipantIdを見つけます。
マッチの情報では、そのゲームに参加した敵味方合わせて10人にparticipantIdが1~10まで割り当てられています。

#participantIdを見つける。
for x in range(10):
    num = file_match_py['participantIdentities'][x]['player']['accountId'] == dic_userInfo['accountId']
    if num is True:
        participantId = x+1 
print(participantId)

#手に入れたマッチの情報から自分の詳細データを手に入れる。
for x in range(10):
    num = file_match_py['participants'][x]['participantId'] == participantId
    if num is True:
        match_Data = file_match_py['participants'][x]

最後に、上記6。
matplotlibを使って、キルデスアシストを円グラフにしてみます。

plt.pie([match_Data['stats']['kills'], match_Data['stats']['assists'], match_Data['stats']['deaths']], colors = ('Green', 'Orange', 'Red'))

f:id:Sorivid:20171224224304p:plain

 このデータが、マッチ後の詳細データとしてビジュアライズされているんですね。すごい。

 次は、戦績データベースサービス(下記参照)で見ることのできるGold変遷とかチャートにしてみたいな。
jp.op.gg


 pythonとかいろいろ初心者で、コード面の未熟な部分がずいぶんあるとおもいますが、そこも含めてコメント待ってます。
 初投稿でした。