MATCH-V5

 

매치기록이 담겨있는 MATCH-V5 관련 파이썬 코드를 작성하였습니다.

 

해당 API는 다음과 같이 3개 존재합니다.

 

(matchID라는 새로운 변수가 보이는데, 게임 진행시 고유 게임번호를 나타내는 변수입니다.)

필요 모듈과 기본 세팅은 Summoner-V4 와 같습니다.

 

import requests
import pprint

pp = pprint.PrettyPrinter(indent=4)
api_key = 'RGAPI-5157b8b3-55bb-462d-bdad-f1b0dfc30314'
request_header = {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36",
                    "Accept-Language": "ko,en-US;q=0.9,en;q=0.8,es;q=0.7",
                    "Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
                    "Origin": "https://developer.riotgames.com",
                    "X-Riot-Token": api_key
                }

 

계정정보(PUUID)로 게임 MATCH ID 넘겨받기

함수 :

변수 설명 :

puuid : 소환사 고유 puuid

start : 가장 최근 경기부터 알고 싶으면 0, (예 : 가장 최근에 했던 3번째 경기부터 알고 싶다면 3)

count : 결과를 몇개 까지 받을지 (max : 100)

def match_v5_get_list_match_id(puuid, start, count):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/{puuid}/ids?start={start}&count={count}"
    return requests.get(url, headers=request_header).json()

함수 호출 :

(페이커 선수의 puuid의 가장 최근 경기부터 10번째 경기 까지 검색)

pp.pprint(match_v5_get_list_match_id("1a2U_f6YkhEatZj1WH8aNomc_60V35WgYGipEBL5dKJ1t08a7M6WDZ1zsI3h6KDX31FiyJjXLnUCdw", 0, 10))

호출 결과 :

[   'KR_5192353258',
    'KR_5192353157',
    'KR_5192353061',
    'KR_5192353033',
    'KR_5192353008',
    'KR_5192352958',
    'KR_5192797149',
    'KR_5191206658',
    'KR_5191206653',
    'KR_5191206602'
]

 

해당 게임(Match ID) 에 관련된 모든 정보 받기

(가장 최근 경기는 바로 업데이트 안되는 것 확인, 그래서 이전 경기로 검색)

 

함수 :

def match_v5_get_match_history(matchId):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/{matchId}"
    return requests.get(url, headers=request_header).json()

함수 호출 :

pp.pprint(match_v5_get_match_history("KR_5284291168"))

호출 결과 :

{   'info': {   'gameCreation': 1624630396000,
                'gameDuration': 1992129,
                'gameId': 5284291168,
                'gameMode': 'CLASSIC',
                'gameName': 'teambuilder-match-5284291168',
                'gameStartTimestamp': 1624630434699,
                'gameType': 'MATCHED_GAME',
                'gameVersion': '11.13.382.1241',
                'mapId': 11,
                'participants': [   {   'assists': 12,
                                        'baronKills': 0,
                                        'bountyLevel': 0,
                                        'champExperience': 9714,
                                        'champLevel': 12,
                                        'championId': 412,
                                        'championName': 'Thresh',
                                        'championTransform': 0,
                                        'consumablesPurchased': 6,
                                        'damageDealtToBuildings': 0,
                                        'damageDealtToObjectives': 802,
                                        'damageDealtToTurrets': 0,
                                        'damageSelfMitigated': 13046,
                                        'deaths': 6,
                                        'detectorWardsPlaced': 5,
                                        'doubleKills': 0,
                                        'dragonKills': 0,
                                        'firstBloodAssist': False,
                                        'firstBloodKill': False,
                                        'firstTowerAssist': False,
                                        'firstTowerKill': False,
                                        'gameEndedInEarlySurrender': False,
                                        'gameEndedInSurrender': False,
                                        'goldEarned': 6955,
                                        'goldSpent': 6300,
                                        'individualPosition': 'UTILITY',
                                        'inhibitorKills': 0,
                                        'inhibitorTakedowns': 0,
                                        'inhibitorsLost': 2,
                                        'item0': 3190,
                                        'item1': 2033,
                                        'item2': 3857,
                                        'item3': 3117,
                                        'item4': 3067,
                                        'item5': 3801,
                                        'item6': 3364,

(너무 길어서 생략...)

 

해당 게임(Match ID) 에 관련된 모든 정보 타임라인별로 받기

함수 :

def match_v5_get_match_timeline(matchId):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/{matchId}/timeline"
    return requests.get(url, headers=request_header).json()

함수 호출 :

pp.pprint(match_v5_get_match_timeline("KR_5284291168"))

호출 결과 :

{   'info': {   'frameInterval': 60000,
                'frames': [   {   'events': [   {   'realTimestamp': 1624630434573,
                                                    'timestamp': 0,
                                                    'type': 'PAUSE_END'},
                                                {   'creatorId': 0,
                                                    'timestamp': 0,
                                                    'type': 'WARD_PLACED',
                                                    'wardType': 'UNDEFINED'}],
                                  'participantFrames': {   '1': {   'championStats': {   'abilityHaste': 0,
                                                                                         'abilityPower': 0,
                                                                                         'armor': 28,
                                                                                         'armorPen': 0,
                                                                                         'armorPenPercent': 0,
                                                                                         'attackDamage': 25,
                                                                                         'attackSpeed': 100,
                                                                                         'bonusArmorPenPercent': 0,
                                                                                         'bonusMagicPenPercent': 0,
                                                                                         'ccReduction': 0,
                                                                                         'cooldownReduction': 0,
                                                                                         'health': 530,
                                                                                         'healthMax': 530,
                                                                                         'healthRegen': 0,
                                                                                         'lifesteal': 0,
                                                                                         'magicPen': 0,
                                                                                         'magicPenPercent': 0,
                                                                                         'magicResist': 30,
                                                                                         'movementSpeed': 335,
                                                                                         'omnivamp': 0,
                                                                                         'physicalVamp': 0,
                                                                                         'power': 274,
                                                                                         'powerMax': 274,
                                                                                         'powerRegen': 0,
                                                                                         'spellVamp': 0},
                                                                    'currentGold': 500,
                                                                    'damageStats': {   'magicDamageDone': 0,
                                                                                       'magicDamageDoneToChampions': 0,
                                                                                       'magicDamageTaken': 0,
                                                                                       'physicalDamageDone': 0,
                                                                                       'physicalDamageDoneToChampions': 0,
                                                                                       'physicalDamageTaken': 0,
                                                                                       'totalDamageDone': 0,
                                                                                       'totalDamageDoneToChampions': 0,
                                                                                       'totalDamageTaken': 0,
                                                                                       'trueDamageDone': 0,
                                                                                       'trueDamageDoneToChampions': 0,
                                                                                       'trueDamageTaken': 0},
                                                                    'goldPerSecond': 0,

(너무 길어서 생략...)

 

전체코드 :

import requests
import pprint

pp = pprint.PrettyPrinter(indent=4)
api_key = 'RGAPI-5157b8b3-55bb-462d-bdad-f1b0dfc30314'
request_header = {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36",
                    "Accept-Language": "ko,en-US;q=0.9,en;q=0.8,es;q=0.7",
                    "Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
                    "Origin": "https://developer.riotgames.com",
                    "X-Riot-Token": api_key
                }


def match_v5_get_list_match_id(puuid, start, count):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/{puuid}/ids?start={start}&count={count}"
    return requests.get(url, headers=request_header).json()


def match_v5_get_match_history(matchId):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/{matchId}"
    return requests.get(url, headers=request_header).json()


def match_v5_get_match_timeline(matchId):
    url = f"https://asia.api.riotgames.com/lol/match/v5/matches/{matchId}/timeline"
    return requests.get(url, headers=request_header).json()

 

반응형

'Data Science > LOL 프로젝트' 카테고리의 다른 글

Riot API (LEAGUE-EXP-V4) 코드 구현  (0) 2021.07.26
Riot API (LEAGUE-V4) 코드 구현  (0) 2021.07.26
Riot API (SUMMONER-V4) 코드 구현  (0) 2021.07.25
Riot API 사용하기 (웹사이트)  (0) 2021.07.25
Riot API 살펴보기  (0) 2021.07.20

+ Recent posts