[ 06/13 TIL ] 롤 데이터 분석용 riot API wrapper 만들기 (1)

JoonQpa·2022년 6월 13일
3

TIL

목록 보기
15/27
post-thumbnail

롤 데이터 분석을 할때, 원하는 데이터들을 이쁘게 모아모아 분석하고 싶지만,

riot 개발자 사이트에서 API Query를 일일히 찾아봐야해서 데이터 정제는 고사하고 Raw데이터를 가져오는 것도 시간이 꽤 걸렸다.

그래서 내가 자주쓰는 혹은 쓸것 같은 Query들을 클래스안에 모두 함수화시켜서 사용하면 너무 좋을 것 같아 조금씩 조금씩 추가해서 편리한 클래스를 만들어보려 한다.

이름은 액면 그대로의 의미와 핵 이름인 헬퍼로 정했다.

📌Helper

import requests
import pandas as pd
from urllib import parse


# KDA, gold, dmg, champ, rune, win or lose, rank, cs, pinkwards, spells, items, gametime
# season's match, winRate
# 챔프에 따른 KDA 및 승률 뽑기

class Helper:

  def setApi(self):
    global apiKey
    apiKey = myApi
    return apiKey, print(f'Your apiKey({apiKey}) is set.')

  def setId(self):
    global id
    id = nickname
    id = parse.quote(nickname)


    global puuid
    id = parse.quote(nickname)
    url = 'https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + id +'?api_key=' + apiKey
    r = requests.get(url)
    r = r.json()
    puuid = r['puuid']
    return id, puuid, print(f'Your puuid({puuid}) is set.(from {nickname})')

  # int for a number of matchId
  # find the latest games
  def getRankId(self,int):
    global rankId
    n = str(int)
    rankUrl = 'https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/' + puuid + '/ids?queue=420&type=ranked&start=0&count='+ n +'&api_key='+ apiKey
    r = requests.get(rankUrl)
    r = r.json()
    rankId = r
    return rankId, print(f'Your MatchId is set as "{rankId}".')

  def matchInfo(self, str):
    global info
    url = 'https://asia.api.riotgames.com/lol/match/v5/matches/' + str + '?api_key=' + apiKey
    r = requests.get(url)
    r = r.json()
    info = r['info']
    return info, print(f'Match information for {str}. It is set as "info".')

  def summonerName(self):
    summonerName = []
    for i in range(0,10):
      name = info['participants'][i]['summonerName']
      summonerName.append(name)
      gameId = info['gameId']
    return summonerName, print(f'Summoner names from a match(gameid : {gameId})')

📌예시


⭐ 아이디어

다음 개인 프로젝트 아이디어가 떠올랐다.

롤을 하다보면 아이템을 사기위해 돈을 아껴놓아야할지, 핑와를 한개 또는 두개를 구입해야할지 고민될때가 많은데, 이때 핑와 구입이 승률에 미치는 영향을 분석해보고 싶어졌다.

⭐ 분석 주제

승리팀과 패배팀의 총 골드 획득량이 비슷한 게임에서의 총 핑와 구입량이 팀의 승률에 미치는 영향

⭐ 가설

승리팀과 패배팀의 총 골드 획득량이 비슷한 게임이라면, 핑와 구입량의 차이가 승률에 영향을 미칠 것이다.

총 골드 획득량이 비슷한 경기를 추리는 이유

플레이어들이 궁금한 부분은

아이템 구매를 위해 골드를 저축하는게 나은지

소비개념으로 당장 핑와를 두개 사는게 더 나은지가 궁금한 것이기 때문에,

골드 획득량 차이가 많이 나는 경기를 분석할 경우, 골드 획득량이 많은 팀의 핑와구입 기회비용이 상대팀보다 낮아져 두 팀사이에서 핑와구입의 영향력이 달라져 분석에 영향을 줄 수 있다.

또한 골드 자체가 승률에 가장 직잡적으로 연관되어 있기때문에 골드차이가 많이 벌어진 경기를 분석할 경우, 이미 골드차이를 많이 벌려놓은 팀의 승률이 높을 수밖에 없는 상태에서, 골드여유가 있는 팀에서의 핑와 구입량이 당연히 높을 것이기 때문에 핑와의 양향력이 과대평가 될 가능성이 있다.

⭐ 계획

승리팀과 패배팀의 총 골드 획득량이 비슷한 플레티넘 게임을 분석.

개인적으로 플레와 다이아 게임을 플레이해본 입장에서 다이아 구간의 플레이어들은 핑와 구입에 굉장히 신경을 쓰기때문에 비교적으로 핑와 구입 선택의 확률이 가장 반반에 가까울 것 같은 플레티넘 게임을 분석


주말전에 끝내보긔

profile
Intuition factory: from noob to pro

4개의 댓글

comment-user-thumbnail
2022년 6월 13일

그림그리시려고 til쓰시는거죠? 그렇죠?

1개의 답글
comment-user-thumbnail
2022년 6월 14일

그림작가 최준헌

1개의 답글