質問編集履歴

2 誤字

grilled_python

grilled_python score 209

2018/04/29 16:26  投稿

LOL riot apiを利用してプレイヤーの全てマッチデータを取得したい
LOL riot apiを利用して一人のプレイヤーの全マッチデータを取得したい
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
from riotwatcher import RiotWatcher
watcher = RiotWatcher('ここにapi keyが入ります。')
my_region = 'kr'
#自身の所属するリージョン
me = watcher.summoner.by_name(my_region, 'サモナーネームが入ります')
#サモナーネームからアカウントIDなどを取得
my_ranked_stats = watcher.league.positions_by_summoner(my_region, me['id'])
#サモナーの基本的なランクのデータです
recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId'])
#直近20試合のデータが見れます
all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId'])
#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない300件以上はあるはず
print(recentmatchlists)
#直近20試合のデータが見れます
print(all_matchlist)
#マッチリストを全部取得できるはずだったのですが・・・
```
参考にした記事道理に進めると直近20試合のデータを無事取得することができました。
```python
recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId'])
#直近20試合のデータが見れます
```
これで全部のマッチリストを取得できるかと思ったんですが、
```python
all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId'])
#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない
#全部で300件はあるはず
```
どうも147件しか取得できていませんでした。なにか制限があるのかなと思ったんですが、大手API利用サイトで確認すると300件ほどの全試合の情報が表示されています。
[公式ドキュメント](https://developer.riotgames.com/api-methods/#match-v3/GET_getMatchlist)を見てみると
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件すべて表示されている。
  • Python 3.x

    9878 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1 誤字

grilled_python

grilled_python score 209

2018/04/29 14:53  投稿

LOL riot apiを利用してプレイヤーの全てマッチデータを取得したい
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
from riotwatcher import RiotWatcher
watcher = RiotWatcher('ここにapi keyが入ります。')
my_region = 'kr'
#自身の所属するリージョン
me = watcher.summoner.by_name(my_region, 'サモナーネームが入ります')
#サモナーネームからアカウントIDなどを取得
my_ranked_stats = watcher.league.positions_by_summoner(my_region, me['id'])
#サモナーの基本的なランクのデータです
recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId'])
#直近20試合のデータが見れます
all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId'])
#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない300件以上はあるはず
print(recentmatchlists)
#直近20試合のデータが見れます
print(all_matchlist)
#マッチリストを全部取得できるはずだったのですが・・・
```
参考にした記事道理に進めると直近20試合のデータを無事取得することができました。
```python
recentmatchlists = watcher.match.matchlist_by_account_recent(my_region,me['accountId'])
#直近20試合のデータが見れます
```
これで全部のマッチリストを取得できるかと思ったんですが、
```python
all_matchlist = watcher.match.matchlist_by_account(my_region,me['accountId'])
#全マッチリスト情報を取得したいがすべて取得できていない147件しか取得できていない
#全部で300件はあるはず
```
どうも147件しか取得できていませんでした。なにか制限があるのかなと思ったんですが、大手API利用サイトで確認すると300件ほどの全試合の情報が表示されています。
[公式ドキュメント](https://developer.riotgames.com/api-methods/#match-v3/GET_getMatchlist)を見てみると
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件すべて表示されている。
  • Python 3.x

    9878 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る