Lina's Toolbox

[RIOT API] 3. 유저네임으로 소환사정보(프로필 아이콘 이미지, 레벨) 가져오기 (summoner-v4) 본문

스파르타 내일 배움 캠프 AI 웹개발 과정/python

[RIOT API] 3. 유저네임으로 소환사정보(프로필 아이콘 이미지, 레벨) 가져오기 (summoner-v4)

Woolina 2024. 10. 12. 06:04

https://kimwoolina.tistory.com/136

 

[RIOT API] 라이엇 API 사용하는법 1. Production API Key 발급 받기 / 라이엇 계정으로 로그인(RSO)? - Secret C

먼저 개발자 API key 를 발급받자.https://developer.riotgames.com/ Riot Developer PortalAbout 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. Thi

kimwoolina.tistory.com

https://kimwoolina.tistory.com/137

 

[RIOT API] 2. 유저이름, 유저태그로 puuid 발급 (account-v1)

https://developer.riotgames.com/apis Riot Developer Portal developer.riotgames.com라이엇 API는 여기에 정리 되어있다!  소환사명 + 태그로 puuid 발급 받기라이엇 API는 대부분 원하는 정보를 바로 얻을 수 없고,대

kimwoolina.tistory.com

 

 

1. puuid로 프로필 아이콘 아이디, 최근 정보 수정일자, id, puuid, 소환사 레벨 가져오기

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

 

Riot Developer Portal

 

developer.riotgames.com

 

summoner-v4의 /lol/summoner/v4/summoners/by-puuid/{encryptedPUUID} 를 이용하면 된다!

 

account-v1의 /riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine} 로 가서 받은 인코딩된 puuid를 입력해주면된다.

지역을 선택후, production key를 발급받은 앱을 선택하여 api_key를 선택해주자.

EXECUTE REQUEST를 누르고 나면,

 

Response Body

{
    "id": "xGPNo8_SJPROZavhFJpqysfasff6VAzrCgMNL0q3rlSQ",
    "accountId": "dOmoc6YhnbEHsWcsfsffsJMcd5WhAsD-siX04uSwzqpx5",
    "puuid": "FGS9t-Uro7Inj8Gksk4NxIvM-71YsfsfgrybL9mrbp7s_I5-GLjWBC83F5Iu_De6g",
    "profileIconId": 6631,
    "revisionDate": 1728680149174,
    "summonerLevel": 125
}

응답 형태!

 

무슨 id가 이리 많나 싶을 수 있는데, 참고로..

puuid (Player Unique ID)
PUUID는 각 플레이어 계정에 부여된 고유 식별자로, 78자 길이의 문자열입니다. 이 ID는 리그 오브 레전드뿐만 아니라 다른 라이엇 게임 제목에서도 사용되며, 플레이어가 사용자 이름이나 소환사 이름을 변경하더라도 일관되게 추적할 수 있습니다.

id
이 ID는 특정 지역이나 게임 클라이언트의 소환사 인스턴스에 대한 고유 식별자를 의미합니다. 문맥에 따라 정확한 의미는 달라질 수 있지만, 주로 특정 게임 내 데이터와 관련이 있습니다.

accountId
accountId는 플레이어의 계정에 고유하게 연결된 식별자로, 소환사 이름이 변경되어도 계속 유지됩니다. 이 ID는 주로 계정 관리에 사용됩니다.

summonerId
summonerId는 게임 내 소환사 이름에 구체적으로 연결된 ID입니다. 플레이어가 소환사 이름을 변경하면 이 ID도 변경될 수 있습니다. 주로 게임 클라이언트와 API 호출에서 사용됩니다.

엄밀히 다들 다른 것임!

 

파이썬 코드

def get_user_profile(api_key, puuid):
    """PUUID로부터 유저의 프로필 정보를 조회합니다."""
    url_profile = f"https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-puuid/{puuid}?api_key={api_key}"

    try:
        response = requests.get(url_profile, timeout=10)
        response.raise_for_status()  # HTTPError가 발생하면 예외 발생
        return response.json()

    except requests.exceptions.RequestException as e:
        print(f"Error fetching profile: {e}")
        return None

 

 

 

2. 프로필 아이콘 이미지 가져오기.

지금 응답형태를 보면, "profileIconId": 6631 이런 식으로 프로필 아이콘의 Id값만 가져오고 있다.

그런데 우리가 원하는건 이 프로필 아이콘이 우리 앱에 이렇게 보이는 게 아닌가?

그래서 방법을 찾아보았다.

 

리그오브 레전드 관련한 이미지 파일들은 Data Dragon이라는 곳에서 제공해주는 것 같다.

구현 방법은 두 가지 인데,

 

방법 1. 이미지 파일을 전부 내 로컬에 다운받는다.

https://developer.riotgames.com/docs/lol#data-dragon

 

Riot Developer Portal

League of Legends Developer API Policy Before you begin, read through the General and Game Policies, Terms of Use and Legal Notices. Developers must adhere to policy changes as they arise. When developing using the API, you must abide by the following: Pro

developer.riotgames.com

여기서 다운 받으면 된다.

아래거를 눌르면 더 낮은 버전을 받을 수 있는데,

버전이 낮을 경우 업데이트 정보가 반영이 안되어, 최근에 나온 아이콘의 정보는 없을 수 있으니 가능하면 최근꺼가 좋은 것 같다.

 

그런데 이걸 다 다운받아서 하면 그렇게 중요하지도 않은데 프로젝트가 무거워지는 것 같아서 난 다른 방법으로 구현하고 싶어서 더 찾아봤다.

 

방법2. CDN 사용

ddragon에서는 cdn을 제공한다!! 구글링 열심히 하다보니 여기서 이미지 파일도 제공하더라.

https://raw.communitydragon.org/latest/game/assets/ux/summonericons/profileicon1.png

이런 게 있길래, 여기서 profileicon1.png에서 숫자만 내가 받은 profileIconId로 바꿔주면 된다는 생각이 들었다.

그러니까 http://ddragon.leagueoflegends.com/cdn/{version}/img/profileicon/profileicon{profileiconId}.png 이런식으로 !!

 

파이썬 코드

 # 프로필 아이콘 URL 생성
profile_icon_link = f"https://raw.communitydragon.org/latest/game/assets/ux/summonericons/profileicon{profile_data['profileIconId']}.png"

이렇게 했더니 진짜 잘 작동한다. ㅎㅎ 

 


 

티어 정보, 선호 챔피언(+사진) 등 등 더 불러오는 건 

다음 포스팅들에서 이어서..