여기에서 전체(읽기: 약간 더 나은) 문서를 확인하세요!
RiotWatcher는 리그 오브 레전드용 Riot Games API를 기반으로 하는 얇은 래퍼입니다. 2024년 4월 9일 현재 모든 공개 메서드가 완전히 지원됩니다.
RiotWatcher는 기본적으로 순진한 속도 제한기를 지원합니다. 이 속도 제한기는 너무 많은 요청을 하지 않도록 시도하며 단일 스레드 테스트 환경에서는 이 작업을 효과적으로 수행합니다. 다중 스레드 환경에서는 여전히 429 오류가 발생할 수 있습니다. 429 오류는 현재 재시도되지 않습니다.
RiotWatcher를 설치하려면:
pip 설치 폭동 감시자
또는 개발/테스트, 복제 및 실행:
pip install -e .[dev] 사전 커밋 설치
또한 Riot의 API 키가 필요합니다. 여기에서 가져오세요.
모든 메소드는 공식 Riot API에서 설명하는 json 객체를 나타내는 사전을 반환합니다. API에서 반환된 모든 HTTP 오류는 요청 라이브러리에서 HTTPError 예외로 발생합니다.
from riotwatcher import LolWatcher , RiotWatcher , ApiError
lol_watcher = LolWatcher ( '<your-api-key>' )
riot_watcher = RiotWatcher ( '<your-api-key>' )
my_region = 'na1'
my_account = riot_watcher . account . by_riot_id ( 'AMERICAS' , 'pseudonym' , 'sudo' )
me = lol_watcher . summoner . by_puuid ( my_region , my_account [ 'puuid' ])
print ( me )
# all objects are returned (by default) as a dict
# lets see if i got diamond yet (i probably didnt)
my_ranked_stats = lol_watcher . league . by_summoner ( my_region , me [ 'id' ])
print ( my_ranked_stats )
# First we get the latest version of the game from data dragon
versions = lol_watcher . data_dragon . versions_for_region ( my_region )
champions_version = versions [ 'n' ][ 'champion' ]
# Lets get some champions
current_champ_list = lol_watcher . data_dragon . champions ( champions_version )
print ( current_champ_list )
# For Riot's API, the 404 status code indicates that the requested data wasn't found and
# should be expected to occur in normal operation, as in the case of a an
# invalid summoner name, match ID, etc.
#
# The 429 status code indicates that the user has sent too many requests
# in a given amount of time ("rate limiting").
try :
response = lol_watcher . summoner . by_name ( my_region , 'this_is_probably_not_anyones_summoner_name' )
except ApiError as err :
if err . response . status_code == 429 :
print ( 'We should retry in {} seconds.' . format ( err . response . headers [ 'Retry-After' ]))
print ( 'this retry-after is handled by default by the RiotWatcher library' )
print ( 'future requests wait until the retry-after time passes' )
elif err . response . status_code == 404 :
print ( 'Summoner with that ridiculous name not found.' )
else :
raise
LolWatcher와 함께 데이터 드래곤 API를 사용할 때 지역은 다른 API 지역과 동일하지 않다는 점을 명심하세요. 특히 다음 지역의 이름이 변경되었습니다(작성 시점 기준).
API | 드래곤 |
은1 | 은네 |
oc1 | 바다 |
2021년 10월 14일 현재(그리고 무기한으로 볼 때) LolStatus API의 v3 및 v4 버전이 Riot에서 지원됩니다. 따라서 RiotWatcher는 두 가지를 모두 사용할 수 있는 방법을 제공합니다. 기본적으로 v3 API는 이전 버전과의 호환성을 위해 사용됩니다.
기본적으로 v4 API를 사용하려면 다음을 사용하여 LolWatcher 인스턴스를 초기화하세요.
from riotwatcher import LolWatcher
lol_watcher = LolWatcher ( '<your-api-key>' , default_status_v4 = True )
# example call
matchlist = lol_watcher . lol_status . platform_data ( 'na1' )
지원 중단 기간 동안 v4 또는 v5를 명시적으로 사용하려면 다음 속성을 사용할 수 있습니다.
from riotwatcher import LolWatcher
lol_watcher = LolWatcher ( '<your-api-key>' )
# use v4 explicitly
matchlist = lol_watcher . lol_status_v4 . platform_data ( 'na1' )
# use v3 explicitly
old_matchlist = lol_watcher . lol_status_v3 . shard_data ( 'na1' )
참고: v3가 완전히 지원 중단된 후에는 이 기능이 지원되지 않습니다! lol_status_v3 및 lol_status_v4 속성이 모두 제거되며, 마이너 버전 증가로 변경 사항이 발생합니다. 원활한 이전 버전과의 호환성을 원한다면 이러한 속성을 사용하지 마십시오.
RiotWatcher는 API 프록시/캐싱 서버 커널과 통합할 수 있습니다. 이는 LolWatcher
생성자에 kernel_url
매개변수를 제공하여 수행할 수 있습니다.
from riotwatcher import LolWatcher , ApiError
lol_watcher = LolWatcher ( kernel_url = "https://your-kernel-instance" ) # should not contain trailing slash
# use watcher as normal
RiotWatcher 폴더에서 다음 명령을 사용하여 단위 테스트를 실행할 수 있습니다.
독소
속도 제한기를 동시에 사용할 경우 일부 경쟁 조건이 발생합니다.
LoL 챔피언 마스터리 엔드포인트가 puuid를 사용하도록 업데이트되었습니다.
LoL 관중 v4가 v5로 대체되었습니다.
python3.7에 대한 지원을 제거합니다. python3.12에 지원되는 추가
TFT 매치 API에 start
매개변수 추가
SEA 지역에 대한 올바른 재매핑
CI/CD에 Python 3.11 지원 추가
LoL Challenges API에 대한 지원이 추가되었습니다.
LoL Matchv5 및 TFT Match 엔드포인트에 대해 'na1' -> 'americas' 재매핑 지원 추가
폭동에 의해 제거된 LoL 타사 코드 API가 제거되었습니다.
일부 문서를 업데이트했습니다.
ddragon 모든 버전 방법을 추가했습니다.
Python 3.10에 대한 지원 추가, Python 3.6에 대한 지원 제거
LolWatcher에서 match_v4 및 match_v5 속성을 제거했습니다. 지금 일치 속성 사용 - v5 API를 사용합니다.
지속적인 http 세션을 사용하여 API에 연결합니다.
Match v5 API에 startTime 및 endTime 매개변수를 추가했습니다.
문서화된 드래곤의 기이함
몇 가지 일반적인 사용 패턴으로 인한 잠재적인 보안 문제 해결
LolStatus-V4 API를 추가합니다. 지금까지 이것이 존재한다는 것을 몰랐습니다.
Match v5 API에 대한 쿼리 "대기열" 및 "유형" 매개변수 추가
LoL MatchAPI v5에 대한 지원 추가
Valorant 최근 경기 API에 대한 지원을 추가합니다.
LoR MatchAPI에 대한 지원을 추가합니다.
Clash API 지원 추가
riotwatcher.RiotWatcher 클래스를 통해 일반 Riot API에 대한 지원을 추가합니다. (참고: 더 이상 사용되지 않는 이전 클래스의 용도가 변경되었습니다. 경고를 받았습니다.)
Valorant API에 대한 지원 추가
문서를 정리했습니다. 꽤 많이.
riotwatcher.LorWatcher 클래스를 통해 LoR API가 추가되었습니다.
riotwatcher.TftWatcher 클래스를 통해 TFT API가 추가되었습니다.
riotwatcher.LorWatcher 클래스를 통해 LoR API에 대한 지원이 추가되었습니다.
더 이상 Python 2를 지원하지 않습니다. 마지막으로. Python 2에 대한 지원이 필요한 경우 v2.7.1을 사용하세요. 또한 Python 3.5는 더 이상 지원되지 않습니다. 3.6 이상을 사용하세요.
riotwatcher.RiotWatcher 클래스는 더 이상 사용되지 않으며 LolWatcher로 이름이 변경되었습니다. riotwatcher.RiotWatcher 클래스는 이전 버전과의 호환성을 위해 유지되었지만 영원히 존재하지는 않습니다.
LolWatcher(이전의 RiotWatcher)에 대한 custom_handler_chain 매개변수가 더 이상 존재하지 않습니다. 이는 rate_limiter, deserializer 및 error_handler 매개변수로 대체되었습니다. 이는 riotwatcher의 외부 API를 요청에서 분리하려는 목표의 일부입니다.
오랫동안 사용되지 않는 클래스를 제거했습니다.
NA 이외의 지역에서 커널을 사용할 때 발생하는 문제가 해결되었습니다.
커널 연결 지원을 추가합니다.
일반 정리
더 이상 사용되지 않는 v3 엔드포인트가 제거되었습니다.
리그 v4 항목/소환사별 및 항목/대기열/티어/디비전 엔드포인트에 대한 지원 추가
더 이상 사용되지 않는 엔드포인트가 사용될 때 경고 로그가 추가되었습니다.
시간 초과 매개변수에 대한 지원이 추가되었습니다. 예:
from riotwatcher import RiotWatcher , TimeoutError
watcher = RiotWatcher ( '<your-api-key>' , timeout = 2.5 ) # timeout is in seconds
try :
watcher . summoner . by_name ( 'na1' , 'pseudonym117' )
except TimeoutError :
print ( 'timed out getting summoner' )
v4 API 지원이 추가되었습니다.
요청 예외에서 예외를 사용자 지정 예외(ApiError)로 변경했습니다. 변경 사항은 버전 v2.6 이상까지 이전 버전과 호환됩니다. 그 후에는 HTTPError 포착이 더 이상 지원되지 않습니다.
파괴:
RequestHandler.preview_static_request 및 RequestHandler.after_static_request는 더 이상 버전 및 로케일을 매개변수로 직접 수신하지 않습니다. 대신 URL을 사용해야 합니다. 이 API는 문서화되지 않았지만 일부 ddragon 관련 변경으로 인해 기술적으로 손상되었습니다.
단위 테스트에서 pytest + tox를 사용하도록 테스트를 전환하고 지원되는 각 Python 버전을 실행하는 것을 기억합니다.
테스트를 실행할 때 적용 범위 측정이 추가되었습니다.
소스를 src 폴더로 옮겼습니다.
통합 테스트를 추가했습니다.
URL 작성을 별도의 모듈로 옮겼습니다.
StaticData API(RIP)가 제거되었습니다.
Champions.all 및 Champions.by_id를 제거했습니다(RIP).
DDragon API 지원 추가
챔피언 로테이션 API에 대한 지원이 추가되었습니다.
문제 #88 수정(최근 매치리스트 엔드포인트가 더 이상 사용되지 않음)
riotewatcher.legacy 네임스페이스 및 API가 제거되었습니다. (마지막으로) v3 API로 업데이트하세요.
예제에 이전 엔드포인트가 있었던 문제 #84를 수정했습니다.
League.by_id 엔드포인트를 추가했습니다.
몇 가지 문서 문제를 수정했습니다.
폭동으로 인해 1이 아닌 더 낮은 제한이 전송되면 올바르게 처리되지 않고 예외가 발생하는 문제 #83이 해결되었습니다.
또한 Limit 클래스에 단위 테스트를 추가했습니다. 시험이 좋으니까.
마스터리 및 룬 API가 완전히 제거되었습니다.
ThirdPartyCode API가 추가되었습니다.
일부 문서 오타를 수정했습니다.
PyLint가 무엇인지 배우고 사용했습니다.
레거시 인터페이스는 버그 수정이 아닌 다음 버전에서 제거됩니다. v3 인터페이스의 올바른 사용에 적응할 시간입니다!
이제 서비스 요율 제한이 실제로 준수됩니다!
무작위 문서 수정... 기타 흥미롭지 않은 것들. 등.
문서 및 자동 테스트 실행기에 대한 많은 수정 사항(pypi 버전 없음)
결함 #80 수정(요청 시 부울이 소문자로 변환되지 않음)
파이썬 2 지원
다수의 PEP 위반 및 고정 댓글 형식이 수정되었습니다.
모든 것을 사용할 수 없게 만드는 불쾌한 패키징 버그를 수정했습니다. 이런.
v3 API 지원.
코드의 대규모 리팩토링, 많은 오래된 호출이 깨졌습니다.
기본적으로 추가된 속도 제한은 제거/교체 가능합니다.
get_summoners 메소드 이름의 특수 문자 문제 해결(문제 #28)
지난 시즌에 대한 요청이 실패하도록 하는 매치리스트 API의 버그를 수정하고 가능한 각 시즌에 대한 상수를 추가했습니다. (문제 #44)
끌어오기 요청 #35에 도입된 버그 수정(문서화된 내용에서 변경된 예외가 발생하는지 확인하는 방법) - 이제 이전 방법이 작동합니다. (문제 #43)
더 이상 사용되지 않는 일치 기록 기능을 제거했습니다.
병합된 매치리스트 엔드포인트 테스트 관련 문제 해결 Readme의 문제 #24 해결 암시장 brawlers 상수 추가
__init__.py가 올바른 패키지를 가져오지 못하는 문제가 해결되었습니다.
current-game-v1.0 및 Featured-games-v1.0 API가 추가되었습니다.
이름에 공백이 있는 단일 소환사를 가져올 때 발생하는 버그/문서화되지 않은 기능을 수정했습니다. 소환사 이름에서 특수 문자를 제거하기 위한 정적 메서드 RiotWatcher.sanitize_name(name)
도 추가되었습니다.
작은 변경, get_summoner의 함수 시그니처 변경, ID로 가져오기 위해 키워드는 이제 id
가 아닌 _id
이며 이를 반영하도록 테스트가 업데이트되었습니다.
누군가가 실제로 사용하고 있다면 일부 게임 상수가 업데이트되었습니다.
LOL 상태 API를 추가합니다. 대단한 일은 아니지만 할 시간이 있었어요.
Match 및 MatchHistory API가 추가되었습니다! 또한 어느 정도 테스트되었지만 쿼리 매개변수는 테스트되지 않았습니다.
몇 가지 새로운 상수를 추가했습니다. 아마도 유용하지는 않지만 누가 알겠습니까? 어쩌면 누군가가 그것을 원할 수도 있습니다.
일부 코드도 약간 더 보기 좋게 변경되었습니다.
업데이트된 API가 지원됩니다. 업데이트된 API:
걱정하지 마세요. 일치 데이터가 곧 지원될 예정입니다. 이미 테스트가 있었기 때문에 이러한 변경 사항을 먼저 커밋하고 싶었습니다.
문제 #4(번호 변경을 잊어버렸습니다. 이런)를 수정하고 다시 할 가능성을 훨씬 줄였습니다. (URL의 API 버전 부분을 다른 방법으로 옮겨서 엉망이 되지 않도록 했습니다.)
또한 이제 테스트도 있습니다!! 우! 모두 기뻐하세요. 하지만 그다지 좋은 테스트는 아니므로 너무 흥분하지 마세요. 그러나 API 래퍼에 명확한 문제가 있는지 감지해야 하는 경우.
아, 그리고 더 나은 서식 지정이 완료되었습니다(탭이 아닌 공백, 보다 일관된 들여쓰기 등). 기능상의 차이가 전혀 없어야 합니다.
EUW가 없으면 지역 프록시에 대한 지원이 추가되었습니다.
어쨌든 버전 번호는 실제로 무엇을 의미합니까?
실제로 방금 추가하는 것을 잊어버린 리그 API에 엔드포인트를 추가하세요. 변경 사항은 이전 버전과 호환되지 않습니다. 폭동 변경 사항 외에도 이전 리그 API 호출을 사용하려면 변경해야 합니다.
새로 지원되는 API: - League-v2.4 - team-v2.3
정적 호출 문제, 즉 직전에 아무 것도 수행하지 않은 문제를 해결합니다. 이제 그들은 작동합니다.
최신 API 버전으로 업데이트되었으며 현재 지원되는 API는 다음과 같습니다.
변경 사항은 이전 버전과 호환되지 않으므로 이전 API 버전을 사용한 코드를 업데이트해야 합니다. 변경 사항에 대한 자세한 내용은 폭동 문서를 확인하세요.
ID별로 팀을 가져오는 Riots의 새로운 방법을 추가했습니다. 'get_teams(team_ids, 지역)' 및 'get_team(team_id, 지역)' 메소드에서.
알파에만 해당, 실험적 속도 제한이 추가됨
최초 출시
RiotWatcher는 Riot Games의 보증을 받지 않으며 Riot Games나 League of Legends 의 제작이나 관리에 공식적으로 관여하는 사람의 관점이나 의견을 반영하지 않습니다. League of Legends 및 Riot Games는 Riot Games, Inc.의 상표 또는 등록 상표입니다. League of Legends (c) Riot Games, Inc.