일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- drf
- 라이엇
- lol
- 자바
- 그리디알고리즘
- greedy
- sort
- 장고
- 롤
- API
- Django
- 코딩테스트준비
- git
- 파이썬
- 그리디
- Riot
- 스파르타내일배움캠프TIL
- python
- 알고리즘
- java
- 탐욕알고리즘
- 리그오브레전드
- 스파르타내일배움캠프
- programmers
- SQL
- 프로그래머스
- 코딩테스트
- 내일배움캠프
- github
- 백준
- Today
- Total
Lina's Toolbox
[RIOT API] 3. 유저네임으로 소환사정보(프로필 아이콘 이미지, 레벨) 가져오기 (summoner-v4) 본문
[RIOT API] 3. 유저네임으로 소환사정보(프로필 아이콘 이미지, 레벨) 가져오기 (summoner-v4)
Woolina 2024. 10. 12. 06:04
https://kimwoolina.tistory.com/136
https://kimwoolina.tistory.com/137
1. puuid로 프로필 아이콘 아이디, 최근 정보 수정일자, id, puuid, 소환사 레벨 가져오기
https://developer.riotgames.com/apis#summoner-v4/GET_getByPUUID
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
여기서 다운 받으면 된다.
아래거를 눌르면 더 낮은 버전을 받을 수 있는데,
버전이 낮을 경우 업데이트 정보가 반영이 안되어, 최근에 나온 아이콘의 정보는 없을 수 있으니 가능하면 최근꺼가 좋은 것 같다.
그런데 이걸 다 다운받아서 하면 그렇게 중요하지도 않은데 프로젝트가 무거워지는 것 같아서 난 다른 방법으로 구현하고 싶어서 더 찾아봤다.
방법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"
이렇게 했더니 진짜 잘 작동한다. ㅎㅎ
티어 정보, 선호 챔피언(+사진) 등 등 더 불러오는 건
다음 포스팅들에서 이어서..