ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Riot API - Summoner
    Data Analysis/League of Legends 2020. 5. 26. 23:55

    지금까지 우리의 최종 목표는 최상위 유저들의 게임 기록을 크롤링(crawling)하는 것입니다.

     

    그런데 라이엇은 이러한 기능을 직접적으로 제공하지 않습니다. 최상위 유저들의 게임 기록을 가져오기 위해 우리는

    1) 최상위 리그 (마스터, 그랜드마스터, 챌린져)의 리그 정보 중 소환사 ID 수집

    2) 소환사 ID를 통해 계정 ID 수집

    3) 계정 ID를 통해 각 소환사의 최근 매치 ID 수집

    4) 최근 매치 ID를 통해 최근 매치 정보 수집

    의 4단계를 거쳐야 합니다.

     


     

    오늘은 소환사 ID를 통해 계정 ID를 수집해 봅시다.

     

    LolMaster 폴더 안에 summoner.py를 작성합니다.

     

    소환사 ID는 이전 글의 League API를 통해 수집할 수 있습니다. 수집한 데이터를 Pandas DataFrame형식으로 가져오도록 코드를 짰기 때문에 summoner_id에 해당하는 column(Pandas Series에 해당)만을 손쉽게 빼올 수 있습니다. 따라서 우리는 계정 ID를 수집하는 함수의 argument를 특정 문자열(str) 또는 DataFrame의 column(Series)으로 제한합시다.

     

    우리가 사용할 API는 다음과 같습니다.

    https://developer.riotgames.com/apis#summoner-v4/GET_getBySummonerId

     

    Riot Developer Portal

     

    developer.riotgames.com

    이를 이용해 get_summoner_by_summoner_id 함수를 짜봅시다.

     

    from typing import Union
    from LolMaster.api import RiotURL
    from pandas import Series, DataFrame, json_normalize
    
    
    def get_summoner_by_summoner_id(summoner_ids: Union[str, Series]):
    	if type(summoner_ids) == str:
    		summoner_ids = Series(summoner_ids)
    
    	df = DataFrame()
    	for account_id in summoner_ids:
    		url = "/lol/summoner/v4/summoners/" + format(account_id)
    		res = RiotURL(url).request()
    		if res is not None:
    			df = df.append(json_normalize(res))
    
    	return df
    

     

    그렇다면 챌린져 유저 정보를 수집해서 계정 ID까지 수집해 볼까요?  해당 코드는 LolMaster 폴더의 상위 폴더에서 실행합니다.

     

    from LolMaster import league, summoner
    
    challenger = league.get_summoner_challenger()
    challenger_users = summoner.get_summoner_by_summoner_id(challenger['summonerId'])

     

    물론, 여기서 challenger_users의 column이 계정 ID (accountID)만 있는 것은 아닙니다. 하지만 지금 우리에겐 중요하지 않죠. 자세한 column들이 궁금하시면 위의 API document를 참고해주세요.

    'Data Analysis > League of Legends' 카테고리의 다른 글

    천상계 게임 정보 크롤링  (0) 2020.05.27
    Riot API - Match  (0) 2020.05.27
    Riot API - League  (0) 2020.05.20
    Riot API - Configuration, Request & Exception Handler, Error Module  (0) 2020.05.20
    Riot API - Environment Setting  (0) 2020.05.20
Designed by Tistory.