riot apiを利用して一人のプレイヤーの全てのマッチ(戦闘)情報を取得したい。
全部で300試合ほどあるのに147件分しか取得できていない。
riotはゲーム会社の名前で、league of legendsという世界一プレイ人口が多いと触れ込みの対戦型ゲームを運営しています。
apiの利用は初めてで、jsonの処理の練習がしたくて始めました。
まず、直接APIを利用するのではなくRiotWatcherという便利なモジュールがあるようなのでこれを使用したいと思います。
python3.6
使用モジュール
RiotWatcher2.2.2
公式apiドキュメント
https://developer.riotgames.com/api-methods/#match-v3/GET_getMatch
参考にした記事
https://qiita.com/KUWAING/items/7f3be2460d3587dedf72
APIを利用している大手サイト
http://jp.op.gg/l=ja
python
1from riotwatcher import RiotWatcher 2 3watcher = RiotWatcher('ここにapi keyが入ります。') 4 5my_region = 'kr' 6#自身の所属するリージョン 7 8me = watcher.summoner.by_name(my_region, 'サモナーネームが入ります') 9#サモナーネームからアカウントIDなどを取得 10 11my_ranked_stats = watcher.league.positions_by_summoner(my_region, me['id']) 12#サモナーの基本的なランクのデータです 13 14recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId']) 15#直近20試合のデータが見れます 16 17 18all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId']) 19#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない300件以上はあるはず 20 21 22 23print(recentmatchlists) 24#直近20試合のデータが見れます 25 26print(all_matchlist) 27#マッチリストを全部取得できるはずだったのですが・・・ 28 29
参考にした記事道理に進めると直近20試合のデータを無事取得することができました。
python
1recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId']) 2#直近20試合のデータが見れます
これで全部のマッチリストを取得できるかと思ったんですが、
python
1all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId']) 2#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない 3#全部で300件はあるはず
どうも147件しか取得できていませんでした。なにか制限があるのかなと思ったんですが、大手API利用サイトで確認すると300件ほどの全試合の情報が表示されています。
公式ドキュメントを見てみると
A number of optional parameters are provided for filtering. It is up to the caller to ensure that the combination of filter parameters provided is valid for the requested account, otherwise, no matches may be returned. If beginIndex is specified, but not endIndex, then endIndex defaults to beginIndex+100. If endIndex is specified, but not beginIndex, then beginIndex defaults to 0. If both are specified, then endIndex must be greater than beginIndex. The maximum range allowed is 100, otherwise a 400 error code is returned. If beginTime is specified, but not endTime, then these parameters are ignored. If endTime is specified, but not beginTime, then beginTime defaults to the start of the account's match history. If both are specified, then endTime should be greater than beginTime. The maximum time range allowed is one week, otherwise a 400 error code is returned.
1週間分しか保存されていないということでしょうか?
だとしたらOP.GGのような大手サイトはずっとAPIを保存して全ての成績を表示しているということでしょうか?
英語も得意ではないので勘違いしている部分が多いかもしれませんがよろしくおねがいいたします。
質問まとめ
riot apiを利用して一人のプレイヤーの全てのマッチ(戦闘)情報を取得したい。
全部で300試合ほどあるのに147件分しか取得できていない。
1週間分しか保存されていないかもしれない、でもお大手サイトでは300件すべて表示されている。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/30 09:05