Verifique a documentação completa (leia-se: um pouco melhor) aqui!
RiotWatcher é um invólucro fino sobre a API da Riot Games para League of Legends. Todos os métodos públicos em 09/04/2024 são totalmente suportados.
Por padrão, o RiotWatcher oferece suporte a um limitador de taxa ingênuo. Esse limitador de taxa tentará impedir que você faça muitas solicitações e, em um ambiente de teste de thread único, faz isso muito bem. Em um ambiente multithread, você ainda pode receber alguns erros 429. No momento, os erros 429 NÃO são repetidos para você.
Para instalar o RiotWatcher:
pip instalar riotwatcher
OU para desenvolvimento/teste, clone e execute:
pip instalar -e .[dev] instalação pré-confirmada
Você também precisa ter uma chave API da Riot. Tire isso daqui.
Todos os métodos retornam dicionários que representam os objetos JSON descritos pela API oficial da Riot. Quaisquer erros HTTP retornados pela API são gerados como exceções HTTPError da biblioteca Requests.
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
Tenha em mente, ao usar APIs data dragon com LolWatcher, que as regiões NÃO são iguais às outras regiões da API. Especificamente, as seguintes regiões foram renomeadas (no momento da escrita):
API | dragão |
eun1 | eune |
oc1 | oceano |
A partir de 14/10/2021 (e pelo que parece, indefinidamente), ambas as versões v3 e v4 da API LolStatus são suportadas pela Riot. Como tal, o RiotWatcher fornece um método para usar ambos. Por padrão, a API v3 será usada para compatibilidade com versões anteriores.
Para usar a API v4 por padrão, use o seguinte para inicializar sua instância 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' )
Para usar explicitamente v4 ou v5 durante o período de descontinuação, é possível usar as seguintes propriedades:
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' )
Nota: isso não será suportado depois que a v3 estiver completamente obsoleta! Ambas as propriedades lol_status_v3 e lol_status_v4 serão removidas, e a mudança acontecerá com um pequeno aumento de versão. Se você deseja compatibilidade retroativa perfeita, não use essas propriedades.
O RiotWatcher pode ser integrado ao kernel do servidor proxy/caching da API. Isso pode ser feito fornecendo o parâmetro kernel_url
ao construtor LolWatcher
.
from riotwatcher import LolWatcher , ApiError
lol_watcher = LolWatcher ( kernel_url = "https://your-kernel-instance" ) # should not contain trailing slash
# use watcher as normal
Os testes unitários podem ser executados com o seguinte comando da pasta RiotWatcher:
tóxico
O limitador de taxa apresenta algumas condições de corrida quando usado simultaneamente.
Endpoints de domínio do LoL Champion atualizados para usar puuid
LoL espectador v4 substituído por v5
Remova o suporte para python3.7; adicionar suporte para python3.12
Adicionar parâmetro start
à API de correspondência TFT
Remapeamento correto para região SEA
Adicionar suporte python 3.11 ao CI/CD
Adicionado suporte para API LoL Challenges
Adicionado suporte para remapear 'na1' -> 'americas' para endpoints LoL Matchv5 e TFT Match
API de código de terceiros LoL removida, assim como foi removida pela riot
Atualizou alguma documentação
Adicionado método ddragon para todas as versões.
Adicione suporte para python 3.10, remova suporte para python 3.6
Propriedades match_v4 e match_v5 removidas do LolWatcher. Use a propriedade match agora - usará a API v5.
Use sessão http persistente para conectar-se à API.
Adicionados parâmetros startTime e endTime para a API match v5
Estranheza ddragon documentada
Corrija possíveis problemas de segurança com alguns padrões de uso comuns
Adicione a API LolStatus-V4. Não sabia que isso existia até agora.
Adicionar parâmetros de consulta "queue" e "type" para a API match v5
Adicionar suporte para LoL MatchAPI v5
Adicione suporte para API de correspondência recente do Valorant.
Adicionado suporte para LoR MatchAPI.
Adicionar suporte para APIs Clash
Adicione suporte para APIs genéricas da Riot por meio da classe riotwatcher.RiotWatcher (nota: a antiga classe obsoleta foi reaproveitada - você foi avisado)
Adicione suporte para APIs valorantes
Documentação limpa. Bastante.
APIs LoR adicionadas por meio da classe riotwatcher.LorWatcher.
APIs TFT adicionadas por meio da classe riotwatcher.TftWatcher.
Adicionado suporte para APIs LoR por meio da classe riotwatcher.LorWatcher.
Não há mais suporte para python 2. Finalmente. Se você precisar de suporte para python 2, use v2.7.1. Além disso, Python 3.5 não é mais compatível. Use 3.6 ou mais recente.
A classe riotwatcher.RiotWatcher foi obsoleta - foi renomeada para LolWatcher. A classe riotwatcher.RiotWatcher foi mantida para compatibilidade com versões anteriores, mas não existirá para sempre.
O parâmetro custom_handler_chain para LolWatcher (anteriormente RiotWatcher) não existe mais. Ele foi substituído pelos parâmetros rate_limiter, deserializer e error_handler. Isso faz parte do objetivo de dissociar as APIs externas do riotwatcher das solicitações.
Removidas classes há muito obsoletas.
Corrigido problema com o uso do kernel em regiões diferentes de NA.
Adicione suporte para conexão ao kernel.
Limpeza geral
Endpoints v3 obsoletos removidos
Adicionado suporte para endpoints de entrada/por invocador e de entrada/fila/nível/divisão da liga v4
Adicionado log de aviso quando o endpoint obsoleto é usado
Adicionado suporte para parâmetro de tempo limite. Exemplo:
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' )
Adicionado suporte à API v4
Exceções alteradas para exceção personalizada (ApiError) da exceção de solicitações. A mudança é compatível com versões anteriores até pelo menos a versão v2.6. Depois disso, a captura de HTTPError não será suportada.
QUEBRA:
RequestHandler.preview_static_request e RequestHandler.after_static_request não recebem mais versão e localidade diretamente como parâmetros. Em vez disso, deveria usar URL. Esta API não está documentada, mas tecnicamente está quebrada por algumas alterações relacionadas ao ddragon.
Testes trocados para usar pytest + tox do unittest e lembrando de executar cada versão do python suportada.
Adicionadas medidas de cobertura ao executar testes.
Fonte movida para a pasta src.
Adicionados testes de integração.
Gravação de URL movida para módulos separados.
API StaticData (RIP) removida
Champions.all e Champions.by_id removidos (RIP)
Adicionado suporte à API DDragon
Adicionado suporte para API de rotação de campeões
Problema corrigido nº 88 (endpoint da lista de partidas recente obsoleto)
Removido o namespace e a API riotewatcher.legacy. Por favor (finalmente) atualize para a API v3.
Corrigido o problema nº 84, onde o endpoint antigo estava nos exemplos
Adicionado endpoint league.by_id
Corrigidos alguns problemas de documentação
Corrigido o problema nº 83, onde limites inferiores a 1 enviados pela riot causavam uma exceção em vez de serem tratados corretamente.
Também foram adicionados testes de unidade à classe Limit. Porque os testes são bons.
Masteries e APIs de runas completamente removidas
Adicionada API ThirdPartyCode
Corrigidos alguns erros de digitação na documentação
Aprendi o que é PyLint e usei-o.
A interface legada será removida na próxima versão sem correção de bugs. É hora de se adaptar ao uso adequado das interfaces v3!
Os limites da taxa de serviço agora são realmente respeitados!
Um monte de correções aleatórias de documentos... outras coisas não interessantes. etc.
Muitas correções na documentação e executores de testes automáticos (sem versão pypi)
Corrigido o defeito nº 80 (booleanos não convertidos para letras minúsculas nas solicitações)
Suporte para Python 2
Corrigimos várias violações do PEP e corrigimos o formato dos comentários.
corrigido um bug desagradável de embalagem que tornava tudo inutilizável. Ops.
Suporte à API v3.
Enorme refatoração de código, muitas chamadas antigas quebradas.
A limitação de taxa adicionada por padrão pode ser removida/substituída.
problema corrigido com caracteres especiais em nomes no método get_summoners (problema nº 28)
bug corrigido na API da lista de partidas que causava falha nas solicitações de temporadas anteriores, constantes adicionadas para cada temporada possível. (edição #44)
bug corrigido introduzido na solicitação pull nº 35 (o método de verificação de qual exceção é lançada mudou em relação ao que foi documentado) - o método antigo deve funcionar agora. (edição #43)
funções de histórico de correspondência removidas, pois estavam obsoletas.
problema corrigido com testes de endpoint de lista de partidas mescladas problema corrigido nº 24 no leia-me adicionadas constantes de lutadores do mercado negro
problema corrigido com __init__.py não importando os pacotes corretos
Adicionadas APIs current-game-v1.0 e feature-games-v1.0
Corrigido bug/recurso não documentado ao obter um único invocador com espaço no nome. Também foi adicionado o método estático RiotWatcher.sanitize_name(name)
para remover caracteres especiais dos nomes dos invocadores.
Pequenas mudanças, assinatura da função get_summoner alterada, para obter por ID a palavra-chave agora é _id
, não id
, testes atualizados para refletir isso
Algumas constantes do jogo foram atualizadas, se alguém as estiver usando.
Adicione a API lol-status. não é uma coisa enorme, mas tive tempo para fazer isso.
Adicionadas APIs Match e MatchHistory! Também são testados um pouco, mas os parâmetros de consulta não são testados.
Adicionadas algumas novas constantes. Provavelmente não é útil, mas quem sabe. Talvez alguém os queira.
Algum código mudou para parecer um pouco melhor também.
APIs atualizadas suportadas. APIs atualizadas:
Não se preocupe, o suporte para dados de partidas está chegando. Eu só queria confirmar essas alterações primeiro, pois elas já tinham testes.
Corrigido o problema nº 4 (esqueci de alterar um número, opa) e tornou muito menos provável que eu fizesse isso novamente (movi parte da versão da API do URL para um método diferente apenas para ter certeza de que não estraguei tudo).
Também agora há TESTES!! UAU! Todos se alegrem. Eles não são testes muito bons, então não fique muito animado. MAS se eles detectarem se há um problema claro no wrapper da API.
Ah, e alguma formatação melhor foi feita (espaços, não tabulações, recuo mais consistente, etc.). Não deve haver nenhuma diferença funcional.
Adicionado suporte para proxies regionais, porque o EUW quebrou sem ele
Porque o que os números de versão realmente significam?
Na verdade, adicione endpoints à API da liga que esqueci de adicionar. A mudança NÃO é compatível com versões anteriores, qualquer uso das chamadas de API da liga antiga precisará ser alterado, além das mudanças da Riot.
APIs recentemente suportadas: - league-v2.4 - team-v2.3
Corrigimos o problema com chamadas estáticas, ou seja, elas não faziam nada certo antes. Agora eles funcionam.
Atualizadas para as versões mais recentes da API, as APIs agora suportadas são:
As alterações NÃO são compatíveis com versões anteriores. Você precisará atualizar qualquer código que usasse uma versão antiga da API. Verifique a documentação da Riots para obter mais informações sobre quais mudanças foram feitas
Adicionados novos métodos da Riots para obter equipes por ID. Nos métodos 'get_teams(team_ids, região)' e 'get_team(team_id, região)'.
Apenas alfa, limite de taxa experimental adicionado
Lançamento inicial
O RiotWatcher não é endossado pela Riot Games e não reflete os pontos de vista ou opiniões da Riot Games ou de qualquer pessoa oficialmente envolvida na produção ou gerenciamento de League of Legends . League of Legends e Riot Games são marcas comerciais ou marcas registradas da Riot Games, Inc. League of Legends (c) Riot Games, Inc.