[TIL] Riot API사용후기

유시준·2022년 4월 20일
0

라이엇 API 토큰발급

라이엇 디벨로퍼사이트에서 토큰을 발급받고 api명세를 볼 수 있다.

오른쪽위의 Register product에서 어떤 프로젝트를 진행할 지 등록을 먼저한 후 api key를 발급받아 사용하면 된다.

API


APIS에 가보면 위와 같이 API들이 명세되어 있다.

  • SUMMONER-V4
    • /lol/summoner/v4/summoners/by-name/{summonerName}
      유저 닉네임으로 암호화된 id들을 가져올 수 있다.
  • MATCH-V5
    • /lol/match/v5/matches/by-puuid/{puuid}/ids
      위 SUMMONER-V4에 있던 api를 통해 puuid를 가져와 최근 매치 ID를 알수 있다.
    • /lol/match/v5/matches/{matchId}
      매치 ID를 통해 해당 매치의 10명의 통계(kda,딜량,닉네임,게임시간)등을 알 수 있다.

예제코드

import requests
from urllib import parse

class RiotApi:
    API_KEY = "API_KEY"
    REQUEST_HEADERS = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
        "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
        "Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
        "Origin": "https://developer.riotgames.com",
        "X-Riot-Token": API_KEY
    }

    def getUserInfo(self, userNickname):
        encodedName = parse.quote(userNickname)
        player = requests.get("https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/" + encodedName,headers=self.REQUEST_HEADERS).json();
        return player;

    def getUserRankInfo(self, userNickname):
        lolUserInfoConsistOfJson = self.getUserInfo(userNickname);
        id = lolUserInfoConsistOfJson["id"];
        playerInfo = requests.get("https://kr.api.riotgames.com/lol/league/v4/entries/by-summoner/"+id, headers = self.REQUEST_HEADERS).json();
        return playerInfo

    def getUserLastGameId(self,puuid):
        gameIdList = requests.get("https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/"+puuid+"/ids?type=ranked&start=0&count=5", headers = self.REQUEST_HEADERS).json();
        return gameIdList;

    def getUserLastGames(self,userNickname):
        lolUserInfoConsistOfJson = self.getUserInfo(userNickname);
        puuid = lolUserInfoConsistOfJson["puuid"];
        userLastGameIdList = self.getUserLastGameId(puuid);
        gameList =[];
        for gameId in userLastGameIdList:
            gameInfo = requests.get("https://asia.api.riotgames.com/lol/match/v5/matches/"+gameId, headers = self.REQUEST_HEADERS).json();
            participantsList =gameInfo["info"]["participants"]
            for participant in participantsList:
                name = participant["summonerName"]
                if name==userNickname:
                    gameList.append(participant);
                    break;
        return gameList;
  • 한글은 쿼리스트링에서 인코딩이 다르기 때문에 여기를 통해 인코딩을 참고하여 코드를 구성했다.
  • 매번 네트워크를 타는 작업을 진행하기 때문에 시간을 줄일 요소가 있는지 내일 확인할 예정이다. 돌려봤는데 눈에띄게 느리다.
profile
금꽁치's Blog

0개의 댓글

관련 채용 정보