SUMMONER-V4 API ์์ puuid ์ถ์ถ
api_key = MY_API
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
"Accept-Language": "ko,en;q=0.9,en-US;q=0.8",
"Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
"Origin": "https://developer.riotgames.com"
}
summoner_ids = summoner_ids_list
summoner_puuid_list=[]
SUMMONER-V4 API์์ puuid๋ฅผ ์ถ์ถํ๊ธฐ ์ํด ํค๋๋ฅผ ๊ฐ์ ธ์์ต๋๋ค.
์ด์ ๊ธ์์ ์ถ์ถํ summerid๋ summer_ids_list์ ๋ฃ์ด์ฃผ๊ณ puuid_list๋ฅผ ์์ฑํด์ค๋๋ค.
for i in summoner_ids:
url=f"https://kr.api.riotgames.com/lol/summoner/v4/summoners/{i}?api_key=MY_API"
rp=requests.get(url,headers=header)
if rp.status_code==429:
print("Rate limit exceeded. Sleeping for 60 seconds")
time.sleep(60)
rp=requests.get(url,headers=header)
if response.status_code==200:
summoner_data=rp.json()
summoner_puuid_list.append(summoner_data)
summerID๋ฅผ ์ถ์ถํ ๋๋ 1ํ์ด์ง์ 250๋ช ๋ง ์ถ์ถํด์ค๋ฉด ๋๊ธฐ์ ๋ฐ๋ก for๋ฌธ์ด ํ์ ์์์ง๋ง
์ฌ๊ธฐ์๋ ์์์ ์ถ์ถํ summerID๋ฅผ ๊ณ์ ๋ฐ๊ฟ ๊ฐ๋ฉด์ API๋ฅผ ํธ์ถํด์ผ ํ๊ธฐ์ for๋ฌธ์ ์ฌ์ฉํ์ต๋๋ค.
RIOT API ํธ์ถ ํ ๋ ์๊ฐ ์ ํ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์
๋ง์ฝ ์๊ฐ ์ ํ์ผ๋ก ์ค๋ฅ๊ฐ ๊ฑธ๋ฆด ๊ฒฝ์ฐ(429) & ์ ๋๋ก ํธ์ถ์ด ๋ ๊ฒฝ์ฐ(200)์ผ๋ก ๋๋ ์ ํธ์ถ ํ์ต๋๋ค
๊ทธ๋ฆฌ๊ณ ์ถ์ถํ ๋ด์ฉ๋ค์ append ๊ธฐ๋ฅ์ ํ์ฉํด summoenr_puuid_list์ ๋ด์์ต๋๋ค.
์ด ์ฝ๋ ์คํ์ด ๊ฝค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.. ์ค๋ฒ I ํฐ์ด 250๋ช ๋ง ๊ฐ์ ธ์ค๋๋ฐ๋ 4๋ถ 50์ด ๊ฐ๋์ด ๊ฑธ๋ฆฌ๋๋ฐ
์์ด์ธ,๋ธ๋ก ์ฆ,์ค๋ฒ ์ด ์ธ ํฐ์ด์์ ๊ฐ๊ฐ 1000๋ช ์ฉ ๊ฐ์ ธ์ค๋ ค๋ฉด ๊ฝค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ ๊ฐ์ต๋๋ค..
summoner_puuid_list๋ฅผ ํธ์ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ต๋๋ค.
์ฌ๊ธฐ์ ํ์ํ ์ ๋ณด๋ puuid๋ง ํ์ํ๊ธฐ์ puuid๋ง ๋ค์ ์ถ์ถํ์ฌ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค
# puuid ๊ฐ์ ์ ์ฅํ ๋ฆฌ์คํธ
puuid_list = []
# for๋ฌธ์ ์ฌ์ฉํ์ฌ puuid ์ถ์ถ
for i in summoner_puuid_list:
puuid_list.append(i['puuid'])
# ์ถ์ถํ puuid ๋ฆฌ์คํธ ์ถ๋ ฅ
print(puuid_list)
๊ทผ๋ฐ ์ค๋ฅ๊ฐ ๋ฉ๋๋ค
puuid ํค๊ฐ ์ค๋ฅ๋ผ๊ณ ๋์ต๋๋ค.
KeyError: 'puuid' ์ค๋ฅ๋ summoner_puuid_list์ ์๋ ๋์ ๋๋ฆฌ ์ค ์ผ๋ถ๊ฐ
puuid๋ผ๋ ํค๋ฅผ ํฌํจํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ex=pd.DataFrame(summoner_puuid_list)
na_in_puuid=ex['puuid'].isna()
print(ex[na_in_puuid])
API ํธ์ถ ์์ Riot API์ ๋ ์ดํธ ๋ฆฌ๋ฐ์ ์ด๊ณผํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
์์ for๋ฌธ์์ ์ ๋๋ก ๋ค ํธ์ถํ์ง ๋ชปํ๊ณ ์ด๊ณผํ id๊ฐ ์์๋๋ด ๋๋ค..
๊ทธ๋์ ๋ฐ์ดํฐ๊ฐ NaN์ธ ๊ฒ์ด ์์ด์ ์ ์ฝ๋๊ฐ ์ ๋๋ก ์คํ๋์ง ์์์ต๋๋ค.
1. summer_puuid_list์์ NAN์ธ ํ์ ๋ฒ๋ฆฌ๊ณ puuid ์ถ์ถํ๊ธฐ
2. API ์ถ์ถํ ๋ 429 ์๋ฌ๊ฐ ๋จ์ง ์๊ฒ ์ฝ๋ ์คํํ๊ธฐ
๋์ค ์ทจ์ฌ์ ํ์ ํด์ผํฉ๋๋ค๋ง ์ต๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ค ์ด๋ฆฌ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ์ผ๋จ 2๋ฒ ๋ถํฐ ์คํํด๋ณด์์ต๋๋ค.
# ๋๋ ์ด ์ถ๊ฐ
time.sleep(1) # 1์ด ๋๋ ์ด
SUMMONER-V4 ํธ์ถ์ ์์ฑํ ์ฝ๋์ ์ ์ฝ๋๋ฅผ ์ถ๊ฐํด๋ณด์์ต๋๋ค.
ex=pd.DataFrame(summoner_puuid_list)
na_in_puuid=ex['puuid'].isna()
print(ex[na_in_puuid])
์๊ฐ ์ ํ ์์ด ์ ๋๋ก ํธ์ถ ๋์ด NAN์ธ row๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
puuid_list=[]
for i in summoner_puuid_list:
puuid=i.get('puuid')
if puuid:
puuid_list.append(puuid)
else:
print(f"puuidํค๊ฐ ์๋ ํญ๋ชฉ์ด ์์ต๋๋ค: {i}")
# ์ถ์ถํ puuid ๋ฆฌ์คํธ ์ถ๋ ฅ
print(puuid_list)
df=pd.DataFrame(puuid_list)
ํน์๋ ๋ค๋ฅธ ํฐ์ด ์ถ์ถํ ๋ NAN๊ฐ์ด ์๊ธธ์ง๋ ๋ชจ๋ฅด๋๊น ํด๋น ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ puuid๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ํ์ต๋๋ค. (1๋ฒ)
puuid๋ ์ ์์ฑ ๋์๊ณ ์ด์ ์ด๊ฒ์ผ๋ก matchID๋ฅผ ํธ์ถ ํด๋ณด๊ฒ ์ต๋๋ค.