๐Ÿ“ฆ๋ถ„์„ ํ”„๋กœ์ ํŠธ/๐ŸŽฎ RIOT API ๋ถ„์„ ๋ฐ ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ

๐ŸŽฎRIOT API ๋ถ„์„ ํ”„๋กœ์ ํŠธ(3) - puuID ์ถ”์ถœ

๋ฐ์ดํ„ฐํŒ์Šค 2024. 9. 10. 02:15

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๋ฅผ ํ˜ธ์ถœ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.