Riot API 사용해보기
https://developer.riotgames.com/ Riot Developer Portal About the Riot Games API With this site we hope to provide the League of Legends developer community with access to game data in a secure and r..
ediblepotato.tistory.com
에서 Riot API를 사용하는 간단한 방법을 확인했다.
이제 이걸로 전적조회사이트를 대충 만들어보려고 한다.
흔히 사용하는 전적조회사이트를 생각해보자.
![](https://blog.kakaocdn.net/dn/cZJsgZ/btqKmpWhWJz/tiyQ7ajJFGRGkHqHNI7hKk/img.png)
해당 소환사명으로 검색하면, 최근 플레이한 게임에 대한 정보가 간략하게 뜬다.
따라서 내가 Riot API를 사용해야 하는 순서를 생각해보면,
1. SUMMONER-V4의 by-name을 통해서 encryptedAccountId를 알아낸다.
2. MATCH-V4의 matchlists/by-account를 통해서 matchId들을 받아온다.
3. MATCH-V4의 matches를 통해서 각 게임의 정보를 받아온다.
![](https://blog.kakaocdn.net/dn/bEhl1x/btqKkObczC5/KcozUYwjktOl38yaqtLfnk/img.png)
![](https://blog.kakaocdn.net/dn/kBt4o/btqKmo4ccDu/qApUIoFwVMIl0ZbJ1Foklk/img.png)
어떤식으로 API 서버에서 응답이 오는지 필자의 계정으로 확인을 해보자.
![](https://blog.kakaocdn.net/dn/yQ6eN/btqKooCAFHV/UVOSuvL0WmPe6bdKM4cft1/img.png)
accountId로 matchlists를 불러오자.
![](https://blog.kakaocdn.net/dn/r6MZ3/btqKibLzVgK/5kg9PrRMc6pk3rFpmMH3h0/img.png)
모든 게임이 뜨는 건 아닌것 같고, 거의 100개 정도의 게임 정보가 뜬다.
그 말은 그 이전의 게임은 조회할 수 없다는 것.
op.gg의 대단함이 느껴진다.
가장 최근 경기의 gameId로 조회해보자.
![](https://blog.kakaocdn.net/dn/32HmQ/btqKjcXHfAT/QROvAjD25IokwwptUK45z1/img.png)
별의 별 정보가 다 들어있는 듯 하다.
게임 끝나고 통계창에 있는 내용은 다 들어있는 것 같다.
필요한 것만 빼서 써보도록 하자.
# views.py
name = request.GET['summoner_name']
summoner_name = parse.quote(name)
# url에 담게 인코딩
request_url = 'https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + summoner_name + '?api_key=' + api_key
data = requests.get(request_url)
data = data.json()
# dict으로 변환
account_id = data['accountId']
# accountId를 가져왔다.
...
request_url = 'https://kr.api.riotgames.com/lol/match/v4/matchlists/by-account/' + summoner['account_id'] + '?api_key=' + api_key
data = requests.get(request_url)
matches = data.json()['matches']
# matchlist를 쭉 가져온다.
...
for match in matches:
request_url = 'https://kr.api.riotgames.com/lol/match/v4/matches/' + str(match['gameId']) + '?api_key=' + api_key
# gameId는 int니까 형변환
data = requests.get(request_url)
data = data.json()
play_time = data['gameDuration']
queue_id = data['queueId']
players = []
# 각 플레이어들의 정보를 담아보자.
for part in data['participants']:
player = dict()
player['id'] = part['participantId']
player['champion'] = part['championId']
player['spell1'] = part['spell1Id']
player['spell2'] = part['spell2Id']
player['level'] = part['stats']['champLevel']
player['kills'] = part['stats']['kills']
player['deaths'] = part['stats']['deaths']
player['assists'] = part['stats']['assists']
player['kda'] = round((player['kills'] + player['assists']) / player['deaths'], 2)
player['item0'] = part['stats']['item0']
player['item1'] = part['stats']['item1']
player['item2'] = part['stats']['item2']
player['item3'] = part['stats']['item3']
player['item4'] = part['stats']['item4']
player['item5'] = part['stats']['item5']
player['item6'] = part['stats']['item6']
player['visionscore'] = part['stats']['visionScore']
player['gold'] = part['stats']['goldEarned']
player['cs'] = part['stats']['totalMinionsKilled']
players.append(player)
...
chapionId, spellId, item들은 전부 int형 id값으로 나타나고 이 id값은 developer.riotgames.com/docs/lol에서 확인할 수 있다.
이런식으로 각 match의 정보들을 담아낼 수 있다.
뭔가 예쁘게 만들어서 포스팅 하고 싶었는데 애초에 프론트는 아무것도 할 줄 몰라서 완성이 안되는 중이다.
참고로 Riot API는 개인에게는 1초에 20회, 2분당 100회의 응답 제한을 두고 있어서,
제한을 두지 않으면 오류가 날 수도 있다.
완성이 되면 추가적으로 포스팅을 해야겠다.
'Web > Django' 카테고리의 다른 글
[Django] 특정 시간에 자동으로 메일 보내기 (0) | 2019.08.13 |
---|