롤 전적 검색 사이트 만들기(1)

2020. 2. 14. 21:10프로젝트/LOL 전적 검색 App

목표

이미 많은 유저들이 OP.GG와 같은 전적 검색 사이트를 이용하지만 상위 티어의 통계만을 이용해 분석된 데이터만 보여줍니다. 따라서 하위 티어에 있는 유저에게는 큰 도움이 되지 않습니다.

또 유저 매칭 시 보이는 정보가 부족하고  라이너 별 팁 정보를 확인하기 어렵습니다.

때문에 이러한 문제점을 해결해서 전적 검색 사이트를 만드는 것을 목표로 했습니다.

 

 


수행 내용 및 방법

1) 정적 정보 불러오기

  • 리그오브레전드에서 제공하는 API 파싱을 통해, 최근 경기 20개의 데이터를 JSON 형태로 가져옵니다.

 

2) 웹페이지 구현 및 시각화

  • Python-Flask를 기반으로 웹 개발 (HTML, CSS, JavaScript를 사용하여 웹 페이지를 구현)
  • 부트스트랩 사용

 

3) 데이터베이스 사용

  • 웹 페이지 사용자의 정보를 이용해 다양한 기능 제공을 위해 데이터베이스(MongoDB)를 사용
  • 회원가입, 로그인 기능을 구현
  • 게시물 등록, 노출 기능을 구현
  • 수집된 사용자 정보를 이용해 유저매칭

1) 정적 정보 불러오기

 

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 reliable way. This is just part of our ongoing effort to respond to players' and developers' requests for data and

developer.riotgames.com

위 사이트에 로그인을 하고 API 키를 발급받아야 API 사용이 가능합니다.

(발급받지 않고 임시로 발급되는 키를 사용하면 일정 시간 동안만 사용이 가능합니다.)

 

 

 

[TOY 1] - 라이엇 API를 사용해서 롤 전적 사이트를 만들어보자

안녕하세요 스타트업에서 프론트엔드 개발자로 일하고있는 Marcus입니다. 매번 퇴근하고 토이 프로젝트를 진행중에있는데 이번에 진행하려는 토이프로젝트는 라이엇에서 제공하는 API를 활용해서 OP.GG와 같은 사이트를 만들어보려고 합니다. UI는 각종 게임 전적 사이트로 유명한OP.GG를 클론 코딩할 계획입니다. 먼저 RIOT API를 사용하려면 롤에 AP...

velog.io

API 키 발급에 대한 내용은 위 블로그에 자세히 나와 있습니다.

발급받은 키는 윈도우 시스템 환경변수에 등록해서 사용했습니다.

import os
apikey = os.environ['LOL_API_KEY']

시스템 환경 변수를 사용하기 위해 파이썬 os라이브러리를 import 했습니다.

API를 사용해 여러 가지 게임 정보를 불러올 수 있는데 라이엇 디벨로퍼 페이지에서 확인 가능합니다.

저는 검색한 유저의 정보와 최근 게임 기록을 가져왔습니다.

@app.route('/data')

def data():
    sum_name = request.args.get('name') 

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

    url_SummonerName = "https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/{}".format(sum_name) 
    res_SummonerName = requests.get(url=url_SummonerName, headers=headers)
    account_Id = res_SummonerName.json()['accountId'] #account id 가져오기

유저 정보와 게임 기록을 가져오기 위해서는 유저 아이디가 아닌 코드로 이루어진 계정 아이디를 사용해야 하기 때문에 

우선 계정 아이디를 알아내야 합니다.

 

위 코드와 같이 url과 헤더를 붙여서 json형태로 요청했습니다.

가져온 json코드에서 'accountId'만 떼어 account_Id를 사용할 수 있게 되었습니다.

 

이제 account_Id를 사용해서 유저 정보와 게임 정보를 가져옵니다.

url_GameID = "https://kr.api.riotgames.com/lol/match/v4/matchlists/by-account/{}?queue=420".format(account_Id) #{encryptedAccountId} = account_ID, 솔랭은 queuetype = 420
    res_GameID = requests.get(url=url_GameID, headers=headers)
    Matches = res_GameID.json()['matches'] #gameID가 들어있는 Mathes를 가져옴
    
    Game_IDs = []  
    for m in range(0, 20):
        Game_IDs.append(Matches[m].get('gameId'))

    game_time = []
    game_summonerName = []
    b_win= []
    b_towerKills = []
    b_inhibitorKills = []
    b_baronKills = []
    b_riftHeraldKills = []
    .
    .
    .
    .

 

 

수집된 데이터 확인을 위해 웹 페이지에 수집된 정보를 뿌려봤습니다.


 

한계점

라이엇 측에서 한 번에 가져올 수 있는 데이터에 제한을 걸어둬서 통계, 분석이 어렵다는 한계점이 있었고 데이터를 매번 가져오기 때문에 속도가 느려서 많은 데이터를 가져올 수 없었습니다.

문제 해결을 위해 데이터베이스를 사용을 고려해봤지만 방대한 양의 데이터를 저장하기엔 자금이 부족했기 때문에 검색한 유저의 최근 게임 기록 20개만 가져오도록 했습니다.

 

 


 

 

Yeowoolee/LOL-API-Statistics

Create web pages that analyze and advise users through analysis - Yeowoolee/LOL-API-Statistics

github.com