Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@QWYNG

PythonでRiotAPIをつかってサモナーネームから試合の詳細データを見てみた (riotwatcher)

More than 3 years have passed since last update.

(注)プログラミングの勉強を始めたばかりのlol中毒者の文系社会人なのでなにかおかしな点があるかもしれませんがご容赦ください。

はじめに RiotAPIとは

RiotAPIとはRiotgames開発の世界で一番遊ばれているであろうオンラインゲーム「league of Legend」の試合の情報やデータを取得することができるものです。
pythonにはriotwatcherというとっても便利なパッケージがありそちらを使うだけで自分のようなプログラミング初心者でもRiotAPIを叩くことができます。

APIキーの発行

https://developer.riotgames.com/
ここからlolのアカウントをもっている人なら誰でもAPIキーを発行できます。

SnapCrab_NoName_2018-3-16_21-16-57_No-00_LI.jpg

Development API Keyとある部分にある文字列がAPIキーです。 ただここにあるキーには有効期限があるので注意。期限のたびに発行しなおせばok
(自分でRiotAPIを使ったサイトをつくりRiotに審査を通せば使用期限のないAPIキーがもらえます。最後に載せますが自分も本当に本当に簡素なアプリをつくって審査に出したら三週間ほどで使用期限のないAPIキーをもらえたので多分登録さえすればもらえます)

実際にriotwatcherを使ってみる

さっそくriotwatcherをインストール

pip install riotwatcher

実際に使ってみましょう
(ちなみに公式Documentはこちら

from riotwatcher import RiotWatcher
watcher = RiotWatcher('APIキー')
my_region = 'jp1'#サーバーによってかわります 日本鯖はjp1
me = watcher.summoner.by_name(my_region, サモナーネーム)
print(me)

実行結果

 {'id': 6167963, 'accountId': 200420601, 'name': 'サモナーネーム', 'profileIconId': 661, 'revisionDate': 1521038800000, 'summonerLevel': 61}

こんな形で辞書でデータがでてきます。もちろん基本的なデータだけでなく詳細なデータも見れますよ

my_ranked_stats = watcher.league.positions_by_summoner(my_region, me['id'])
#サモナーの基本的なランクのデータです
recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me[ 'accountId'])
#直近20試合のデータが見れます
matches = recentmatchlists['matches']
x = 0
match_detail = []
for x in range(20):
  match_detail.append(watcher.match.by_id(my_region, matches[x]['gameId']))
  x += 1
#gameIdごとに試合の詳細が見れます。 今回は20試合分まとめて一つの配列として扱いました。

実行結果

#print(my_ranked_stats)の結果
[{'leagueId': '1685f020-fac4-11e7-83fb-90b11c3eac0c', 'leagueName': "Corki's Sentinels", 'tier': 'GOLD', 'queueType': 'RANKED_SOLO_5x5', 'rank': 'III', 'playerOrTeamId': '6167963', 'playerOrTeamName': 'QWYNG', 'leaguePoints': 13, 'wins': 96, 'losses': 104, 'veteran': True, 'inactive': False, 'freshBlood': False, 'hotStreak': False}]
#print(recentmatchlists)の結果 とっても長い
{'matches': [{'platformId': 'JP1', 'gameId': 168391993, 'champion': 498, 'queue': 420, 'season': 11, 'timestamp': 1521037344937, 'role': 'DUO_CARRY', 'lane': 'BOTTOM'}, {'platformId': 'JP1', 'gameId': 168401004, 'champion': 81, 'queue': 420, 'season': 11, 'timestamp': 1521034939616, 'role': 'DUO_CARRY', 'lane': 'BOTTOM'}, {'platformId': 'JP1', 'gameId': 168359941, 'champion': 110, 'queue': 420, 'season': 11, 'timestamp': 1521031926183, 'role': 'DUO_CARRY', 'lane': 'BOTTOM'}, {'platformId': 'JP1', 'gameId': 168379132, 'champion': 51, 'queue': 420, 'season': 11, 'timestamp': 1521030186057, 'role': 'DUO_CARRY', 'lane': 'BOTTOM'}, {'platformId': 'JP1', 'gameId': 168368761, 'champion': 4, 'queue': 420, 'season': 11, 'timestamp': 1521028462564, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168358261, 'champion': 4, 'queue': 420, 'season': 11, 'timestamp': 1521026037633, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168377531, 'champion': 163, 'queue': 420, 'season': 11, 'timestamp': 1521023974637, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168377205, 'champion': 245, 'queue': 420, 'season': 11, 'timestamp': 1521022113320, 'role': 'DUO', 'lane': 'TOP'}, {'platformId': 'JP1', 'gameId': 168366421, 'champion': 53, 'queue': 420, 'season': 11, 'timestamp': 1521016653949, 'role': 'DUO_SUPPORT', 'lane': 'BOTTOM'}, {'platformId': 'JP1', 'gameId': 168366013, 'champion': 163, 'queue': 420, 'season': 11, 'timestamp': 1521014197150, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168375079, 'champion': 103, 'queue': 420, 'season': 11, 'timestamp': 1521009078996, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168344284, 'champion': 163, 'queue': 420, 'season': 11, 'timestamp': 1520937128699, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168343957, 'champion': 24, 'queue': 420, 'season': 11, 'timestamp': 1520935394146, 'role': 'NONE', 'lane': 'JUNGLE'}, {'platformId': 'JP1', 'gameId': 168323714, 'champion': 103, 'queue': 420, 'season': 11, 'timestamp': 1520933206246, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168343176, 'champion': 103, 'queue': 420, 'season': 11, 'timestamp': 1520930687464, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168294543, 'champion': 61, 'queue': 420, 'season': 11, 'timestamp': 1520863112271, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168293684, 'champion': 163, 'queue': 420, 'season': 11, 'timestamp': 1520860865954, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168302960, 'champion': 245, 'queue': 420, 'season': 11, 'timestamp': 1520858766242, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 168302111, 'champion': 163, 'queue': 420, 'season': 11, 'timestamp': 1520856286023, 'role': 'DUO_SUPPORT', 'lane': 'NONE'}, {'platformId': 'JP1', 'gameId': 168301336, 'champion': 103, 'queue': 420, 'season': 11, 'timestamp': 1520853408098, 'role': 'SOLO', 'lane': 'MID'}], 'startIndex': 0, 'endIndex': 20, 'totalGames': 177}

print(match_detail)の結果 情報量多すぎて記事作成ページが動かないくらいなので画像で少し
SnapCrab_NoName_2018-3-17_0-19-13_No-00.png
※一試合分すら載せきれてません lolプレイヤーなら情報の意味はわかるはず。本当にその試合のなんでもわかります。
こちらのすべての情報をみれる簡単なアプリをつくったので最後に載せます。

まとめ

riotwacherを使うとpythonで簡単にRiotAPIから情報を得ることができます
RiotAPIからは思った以上に様々な情報を得ることできるのでlol好きな人はぜひ試してください。
最後にプログラミングズブの素人のただのlol廃人の自分ですがmatch_detailをサモナーネームからそのまま文字列で帰すアプリをつくったので載せておきます。
soloqnote(一気にデータ読み込む関係上少し重いです)
サイトとしてはおかしな点もあるかと思いますが…ごめんなさい
最後まで読んでいただきありがとうございます。

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
QWYNG
globis
グロービスは 1992 年の創業以来、社会人を対象とした MBA、人材育成の領域で Ed-Tech サービスを提供し、現在は日本 No.1 の実績があります。これらの資産と、さらに IT や AI を活用することで、アジア No.1 を目指しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?