pythonでLeague of Legendsの統計データを見る【入門】
データサイエンスに興味を持っています。
そこで、身近なデータとしてLeagueOfLegendsというゲームの戦績を手に入れてみようと思ったわけです。
このゲームの開発元のRiotGamesさんの開発者ページ(Riot Developer Portal)にてAPIを提供していますので、チャレンジしてみます。
言語はpythonでやってみます。
概要:
- デベロッパー各々に与えられるAPIキーを開発者ページからコピーして、APIのURL末尾に「?api_key=~~~~~」とする必要があります。
- ユーザ情報を取得しアカウントID(数字)を取得
- アカウントIDから100戦分のリストを取得し、どれか1戦分のマッチIDを取得
- マッチIDからそのマッチの詳細を取得
- マッチ詳細にはそのマッチに参加した10人分のデータが入ってるので、自分のだけを抽出
- 今回はキル、デス、アシストのデータを円グラフにしてみました。
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'))
このデータが、マッチ後の詳細データとしてビジュアライズされているんですね。すごい。
次は、戦績データベースサービス(下記参照)で見ることのできるGold変遷とかチャートにしてみたいな。
jp.op.gg
pythonとかいろいろ初心者で、コード面の未熟な部分がずいぶんあるとおもいますが、そこも含めてコメント待ってます。
初投稿でした。