RIOT APIデータの格納方法
これまで、
毎回riotapiを呼び出してデータ分析を行います.
次の問題が発生しました. api鍵 を更新する必要があるリクエスト数を超える可能性のある問題 そこで今回はデータをjsonファイルに保存します.
次に、apiを呼び出さずに格納されたデータを取得することを確認します.
データを格納するために、
まず、最初のコールが必要です.
コードはWeb上の他の人と共有できます.
独自のapiキーを変数に割り当てて使用すると、
api keyは、不特定のユーザの盲目的な呼び出しに制限される可能性があります.
それでapi keyを使用してenvという非表示ファイルに格納してロードする方法です.
envの書き方がわからない方はフォローしてください😃 .env作成方法
「オペレーティングシステムと対話するための数十の関数を提供しました.」
OSモジュールのenvironment関数を使用して、現在のPython環境の環境変数を理解します.
私は早めに.Envのriot tokenキーとニックネームキー
api keyとゲームニックネームをvalueとして保存しました.
以上のリクエストの結果はjsonファイル形式で保存されました.
上に保存した召唤师の情报で、合计100点を入れて保存する.
今回保存するデータはmatch idです.
match idを使用して、詳細なmatchデータと時間軸データをロードできます.
idのマッチングを要求する場合はpuuidを入力として必要とします.
countに100を入力し、データを要求します.
最近のゲームは0から始まり、全部で100個のデータがあります.
一度に持ってくる量は100点です.
ここにwithを書き込むと自動的にファイルが閉じます.
Open関数を使用してtxtファイルまたは複数のファイルを開き()を閉じない場合は、
ファイルが常に開いていることを防止します.
ストレージ/lol/match/v 5/matchs/{matchId}データ
毎回riotapiを呼び出してデータ分析を行います.
次の問題が発生しました.
次に、apiを呼び出さずに格納されたデータを取得することを確認します.
.envからapiキーをインポート
データを格納するために、
まず、最初のコールが必要です.
コードはWeb上の他の人と共有できます.
独自のapiキーを変数に割り当てて使用すると、
api keyは、不特定のユーザの盲目的な呼び出しに制限される可能性があります.
それでapi keyを使用してenvという非表示ファイルに格納してロードする方法です.
envの書き方がわからない方はフォローしてください😃 .env作成方法
import os
from dotenv import load_dotenv
正式なドキュメントを表示する場合、osモジュールは次のようになります.「オペレーティングシステムと対話するための数十の関数を提供しました.」
OSモジュールのenvironment関数を使用して、現在のPython環境の環境変数を理解します.
私は早めに.Envのriot tokenキーとニックネームキー
api keyとゲームニックネームをvalueとして保存しました.
load_dotenv()
上のコードでを行ないます.riot_token = os.environ['riot_token']
nickname = os.environ['nickname']
今apiをお願いします.召喚士情報を保存
import requests
summoner_info_req_url = f'https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/{nickname}?api_key={riot_token}'
summoner_info = requests.get(summoner_info_req_url)
予め割り当てられた変数を使用して要求urlにapiを要求します.with open('저장할 파일 이름','w') as json_file:
json.dump(summoner_info.json(),json_file,ensure_ascii=False) # 한글이 포함된 경우 ensure_ascii False
ファイル名を指定します.以上のリクエストの結果はjsonファイル形式で保存されました.
試合記録を保存する
上に保存した召唤师の情报で、合计100点を入れて保存する.
今回保存するデータはmatch idです.
match idを使用して、詳細なmatchデータと時間軸データをロードできます.
with open('저장한 소환사 정보 경로','r') as file:
my_summoner_info = json.load(file)
puuid = my_summoner_info['puuid']
上に保存した召喚士情報をロードしpuuidデータを取得しました.idのマッチングを要求する場合はpuuidを入力として必要とします.
start = 0
count = 100
match_req_url = f'https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/{puuid}/ids?start={start}&count={count}&api_key={riot_token}'
match_list = requests.get(match_req_url)
開始時は0、countに100を入力し、データを要求します.
最近のゲームは0から始まり、全部で100個のデータがあります.
一度に持ってくる量は100点です.
with open('저장할 파일 이름','w') as file:
json.dump(match_list.json(), file, ensure_ascii=False)
今回も上のように保存ここにwithを書き込むと自動的にファイルが閉じます.
Open関数を使用してtxtファイルまたは複数のファイルを開き()を閉じない場合は、
ファイルが常に開いていることを防止します.
ストレージ/lol/match/v 5/matchs/{matchId}データ
要求されたurlによって要求されたデータは、次のように呼ばれます.
match_apiwith open('저장한 매치 아이디 목록 경로','r') as match_list_file:
match_list = json.load(match_list_file)
上に保存したMatchリストIDリストをmatchリストにロードします.
リストでapiをループ呼び出します.# 호출 횟수 제한
requests_limit = 0
# 리스트 순회하면서 api 호출
for match_id in match_list:
# 1초에 최대 20회
if requests_limit==20:
time.sleep(1)
# 2분에 최대 100회
elif requests_limit==100:
time.sleep(120)
# api 요청
match_api_req_url = f'https://asia.api.riotgames.com/lol/match/v5/matches/{match_id}?api_key={riot_token}'
match_api = requests.get(match_api_req_url)
# 호출 횟수 증가
requests_limit += 1
# match_api 저장
with open(f'저장할 파일 이름','w') as match_api_file:
json.dump(match_api.json(), match_api_file, ensure_ascii=False)
if requests_limit==100:
time.sleep(120)
riot apiにはコール回数制限があります.
この制限を超えないことをお勧めします.
呼び出し回数を超えてapiにブロックされてから数日...
だから上にifゲートを使って意外に制限を超えないように入れました
最後のセクションではjupyternotebookを一度に実行し、すぐに呼び出すこともできます.
2分待つように命令した.
記憶/lol/match/55/matchs/{matchId}/時間軸データ
要求されたurlによって要求されたデータは、次のように呼ばれます.
match_timeline_api# match_timeline_api 요청하기
requests_limit = 0
for match_id in match_list:
if requests_limit==20:
time.sleep(1)
elif requests_limit==100:
time.sleep(120)
match_timeline_api_req_url = f'https://asia.api.riotgames.com/lol/match/v5/matches/{match_id}/timeline?api_key={riot_token}'
match_timeline_api = requests.get(match_api_req_url)
requests_limit += 1
# match_api 저장
with open(f'저장할 파일 이름','w') as match_timeline_api_file:
json.dump(match_timeline_api.json(), match_timeline_api_file, ensure_ascii=False)
if requests_limit==100:
time.sleep(120)
マッチアプリを作るときと同じように
これで、op.ggのようなスクロール分析サイトのようにデータを蓄積できます.
また、コールのたびにオーバーする心配はありません.データを使用できます.
質問またはフィードバックへようこそ:)
読んでくれてありがとう.
Reference
この問題について(RIOT APIデータの格納方法), 我々は、より多くの情報をここで見つけました
https://velog.io/@dongdongju96/RIOT-API-데이터-저장하는-방법
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
with open('저장한 매치 아이디 목록 경로','r') as match_list_file:
match_list = json.load(match_list_file)
# 호출 횟수 제한
requests_limit = 0
# 리스트 순회하면서 api 호출
for match_id in match_list:
# 1초에 최대 20회
if requests_limit==20:
time.sleep(1)
# 2분에 최대 100회
elif requests_limit==100:
time.sleep(120)
# api 요청
match_api_req_url = f'https://asia.api.riotgames.com/lol/match/v5/matches/{match_id}?api_key={riot_token}'
match_api = requests.get(match_api_req_url)
# 호출 횟수 증가
requests_limit += 1
# match_api 저장
with open(f'저장할 파일 이름','w') as match_api_file:
json.dump(match_api.json(), match_api_file, ensure_ascii=False)
if requests_limit==100:
time.sleep(120)
要求されたurlによって要求されたデータは、次のように呼ばれます.
match_timeline_api
# match_timeline_api 요청하기
requests_limit = 0
for match_id in match_list:
if requests_limit==20:
time.sleep(1)
elif requests_limit==100:
time.sleep(120)
match_timeline_api_req_url = f'https://asia.api.riotgames.com/lol/match/v5/matches/{match_id}/timeline?api_key={riot_token}'
match_timeline_api = requests.get(match_api_req_url)
requests_limit += 1
# match_api 저장
with open(f'저장할 파일 이름','w') as match_timeline_api_file:
json.dump(match_timeline_api.json(), match_timeline_api_file, ensure_ascii=False)
if requests_limit==100:
time.sleep(120)
マッチアプリを作るときと同じようにこれで、op.ggのようなスクロール分析サイトのようにデータを蓄積できます.
また、コールのたびにオーバーする心配はありません.データを使用できます.
質問またはフィードバックへようこそ:)
読んでくれてありがとう.
Reference
この問題について(RIOT APIデータの格納方法), 我々は、より多くの情報をここで見つけました https://velog.io/@dongdongju96/RIOT-API-데이터-저장하는-방법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol