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 |