Consultez la documentation complète (lire : légèrement meilleure) ici !
RiotWatcher est un mince wrapper au-dessus de l'API Riot Games pour League of Legends. Toutes les méthodes publiques à compter du 9/04/2024 sont entièrement prises en charge.
RiotWatcher prend en charge par défaut un limiteur de débit naïf. Ce limiteur de débit tentera de vous empêcher de faire trop de requêtes, et dans un environnement de test à thread unique, il le fait plutôt bien. Dans un environnement multithread, vous pouvez toujours obtenir des erreurs 429. Les erreurs 429 ne sont actuellement PAS réessayées pour vous.
Pour installer RiotWatcher :
pip installer riotwatcher
OU pour le développement/test, clonez et exécutez :
pip install -e .[dév] installation préalable à la validation
Vous devez également disposer d'une clé API de Riot. Obtenez ça d'ici.
Toutes les méthodes renvoient des dictionnaires représentant les objets json décrits par l'API officielle de Riot. Toutes les erreurs HTTP renvoyées par l'API sont générées en tant qu'exceptions HTTPError à partir de la bibliothèque 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
Gardez à l'esprit lorsque vous utilisez les API Data Dragon avec LolWatcher que les régions ne sont PAS les mêmes que les autres régions de l'API. Plus précisément, les régions suivantes sont renommées (au moment de la rédaction) :
API | dragon |
eun1 | eune |
oc1 | océan |
Depuis le 14/10/2021 (et à première vue, indéfiniment), les versions v3 et v4 de l'API LolStatus sont prises en charge par Riot. En tant que tel, RiotWatcher fournit une méthode pour utiliser les deux. Par défaut, l'API v3 sera utilisée pour la compatibilité ascendante.
Pour utiliser l'API v4 par défaut, utilisez ce qui suit pour initialiser votre instance 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' )
Pour utiliser explicitement la version 4 ou la version 5 pendant la période de dépréciation, vous pouvez utiliser les propriétés suivantes :
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' )
Remarque : cela ne sera plus pris en charge une fois la v3 complètement obsolète ! Les propriétés lol_status_v3 et lol_status_v4 seront supprimées et le changement se produira avec une augmentation mineure de la version. Si vous souhaitez une compatibilité descendante transparente, n'utilisez pas ces propriétés.
RiotWatcher peut s'intégrer au noyau du serveur proxy/cache API. Cela peut être fait en fournissant le paramètre kernel_url
au constructeur LolWatcher
.
from riotwatcher import LolWatcher , ApiError
lol_watcher = LolWatcher ( kernel_url = "https://your-kernel-instance" ) # should not contain trailing slash
# use watcher as normal
Les tests unitaires peuvent être exécutés avec la commande suivante depuis le dossier RiotWatcher :
toxine
Le limiteur de débit présente certaines conditions de concurrence lorsqu'il est utilisé simultanément.
Points de terminaison de maîtrise LoL Champion mis à jour pour utiliser puuid
LoL spectateur v4 remplacé par v5
Supprimez la prise en charge de python3.7 ; ajout pris en charge pour python3.12
Ajouter un paramètre start
à l'API de correspondance TFT
Remappage correct pour la région SEA
Ajouter la prise en charge de Python 3.11 à CI/CD
Ajout de la prise en charge de l'API LoL Challenges
Ajout de la prise en charge du remappage « na1 » -> « Americas » pour les points de terminaison LoL Matchv5 et TFT Match
Suppression de l'API de code tiers LoL, car elle a été supprimée par Riot.
Mise à jour de certains documents
Ajout de la méthode ddragon toutes versions.
Ajouter la prise en charge de Python 3.10, supprimer la prise en charge de Python 3.6
Suppression des propriétés match_v4 et match_v5 de LolWatcher. Utilisez la propriété match maintenant - utilisera l'API v5.
Utilisez une session http persistante pour vous connecter à l'API.
Ajout des paramètres startTime et endTime pour l'API match v5
Étrangeté documentée du dragon
Résoudre un problème de sécurité potentiel avec certains modèles d'utilisation courants
Ajoutez l'API LolStatus-V4. Je n'avais pas réalisé que cela existait jusqu'à présent.
Ajouter les paramètres de requête "file d'attente" et "type" pour l'API match v5
Ajouter la prise en charge de LoL MatchAPI v5
Ajoutez la prise en charge de l'API de correspondance récente de Valorant.
Ajoutez la prise en charge de LoR MatchAPI.
Ajouter la prise en charge des API Clash
Ajoutez la prise en charge des API Riot génériques via la classe riotwatcher.RiotWatcher (remarque : l'ancienne classe obsolète a été réutilisée - vous avez été prévenu)
Ajouter la prise en charge des API Valorant
Documentation nettoyée. Un peu.
API LoR ajoutées via la classe riotwatcher.LorWatcher.
API TFT ajoutées via la classe riotwatcher.TftWatcher.
Ajout de la prise en charge des API LoR via la classe riotwatcher.LorWatcher.
Plus de support pour Python 2. Enfin. Si vous avez besoin de la prise en charge de Python 2, veuillez utiliser la version 2.7.1. Python 3.5 n'est également plus pris en charge. Veuillez utiliser la version 3.6 ou plus récente.
La classe riotwatcher.RiotWatcher est obsolète - Elle a été renommée LolWatcher. La classe riotwatcher.RiotWatcher a été maintenue pour des raisons de compatibilité ascendante, mais n'existera pas éternellement.
Le paramètre custom_handler_chain pour LolWatcher (anciennement RiotWatcher) n'existe plus. Il a été remplacé par les paramètres rate_limiter, deserializer et error_handler. Cela fait partie de l'objectif de dissocier les API externes de riotwatcher des requêtes.
Suppression des classes obsolètes depuis longtemps.
Correction d'un problème avec l'utilisation du noyau sur des régions autres que NA.
Ajoutez la prise en charge de la connexion au noyau.
Nettoyage général
Suppression des points de terminaison v3 obsolètes
Ajout de la prise en charge des points de terminaison d'entrée/par invocateur de la ligue v4 et d'entrée/file d'attente/niveau/division
Ajout d'un journal d'avertissement lorsqu'un point de terminaison obsolète est utilisé
Ajout de la prise en charge du paramètre timeout. Exemple:
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' )
Ajout de la prise en charge de l'API v4
Modification des exceptions en exception personnalisée (ApiError) à partir de l'exception des demandes. Le changement est rétrocompatible jusqu'à au moins la version v2.6. Après cela, la capture de HTTPError ne sera plus prise en charge par l'enregistreur.
RUPTURE:
RequestHandler.preview_static_request et RequestHandler.after_static_request ne reçoivent plus la version et les paramètres régionaux directement en tant que paramètres. Devrait plutôt utiliser l'URL. Cette API n'est pas documentée, mais techniquement cassée par certaines modifications liées à Dragon.
Tests commutés pour utiliser pytest + tox de unittest et sans oublier d'exécuter chaque version de Python prise en charge.
Ajout de mesures de couverture lors de l'exécution de tests.
Source déplacée dans le dossier src.
Ajout de tests d'intégration.
L'écriture d'URL a été déplacée dans des modules séparés.
API StaticData supprimée (RIP)
Suppression de champions.all et champions.by_id (RIP)
Ajout de la prise en charge de l'API DDragon
Ajout de la prise en charge de l'API de rotation des champions
Problème résolu n° 88 (point de terminaison récent de la liste de correspondance obsolète)
Suppression de l'espace de noms et de l'API riotewatcher.legacy. Veuillez (enfin) mettre à jour l'API v3.
Correction du problème n°84 où l'ancien point de terminaison se trouvait dans les exemples
Ajout du point de terminaison league.by_id
Correction de quelques problèmes de documentation
Correction du problème n°83 où les limites inférieures non-1 envoyées par Riot provoquaient une exception au lieu d'être gérées correctement.
Également ajouté des tests unitaires à la classe Limit. Parce que les tests sont bons.
API de maîtrises et de runes complètement supprimées
Ajout de l'API ThirdPartyCode
Correction de quelques fautes de frappe dans la documentation
J'ai appris ce qu'est PyLint et je l'ai utilisé.
L'interface héritée doit être supprimée avec la prochaine version non corrigée. Il est temps de s'adapter à une bonne utilisation des interfaces v3 !
Les limites des tarifs de service sont désormais effectivement respectées !
Un tas de corrections de documents aléatoires... d'autres trucs non intéressants. etc.
De nombreux correctifs de la documentation et des lanceurs de tests automatiques (pas de version pypi)
Correction du défaut #80 (booléens non convertis en minuscules dans les requêtes)
Prise en charge de Python 2
Correction d'un certain nombre de violations PEP et du format des commentaires.
Correction d'un vilain bug d'emballage rendant tout inutilisable. Oups.
Prise en charge de l'API v3.
Énorme refactorisation du code, de nombreux anciens appels interrompus.
Limitation de débit ajoutée par défaut, peut être supprimée/remplacée.
problème résolu avec les caractères spéciaux dans les noms dans la méthode get_summoners (problème n°28)
correction d'un bug dans l'API matchlist provoquant l'échec des requêtes pour les saisons passées, ajout de constantes pour chaque saison possible. (numéro 44)
correction d'un bug introduit dans la pull request n°35 (méthode de vérification de l'exception levée modifiée par rapport à ce qui était documenté) - l'ancienne méthode devrait fonctionner maintenant. (numéro 43)
suppression des fonctions d'historique des matchs, car elles étaient obsolètes.
Correction d'un problème avec les tests de points de terminaison de la liste de correspondance fusionnée. Correction du problème n°24 dans le fichier Lisez-moi. Ajout des constantes des bagarreurs du marché noir.
problème résolu avec __init__.py qui n'importait pas les bons packages
Ajout des API Current-Game-v1.0 et Featured-Games-v1.0
Correction d'un bug/fonctionnalité non documentée lors de l'obtention d'un seul invocateur avec un espace dans le nom. Également ajouté la méthode statique RiotWatcher.sanitize_name(name)
pour supprimer les caractères spéciaux des noms d'invocateur.
De minuscules changements, la signature de fonction de get_summoner a été modifiée, pour obtenir par ID, le mot-clé est maintenant _id
, et non id
, tests mis à jour pour refléter cela
Certaines constantes du jeu ont été mises à jour, si quelqu'un les a réellement utilisées.
Ajoutez l'API de statut mdr. ce n'est pas énorme mais j'ai eu le temps de le faire.
Ajout des API Match et MatchHistory ! Sont également quelque peu testés, mais les paramètres de requête ne sont pas testés.
Ajout de nouvelles constantes. Probablement pas utile, mais qui sait. Peut-être que quelqu'un en voudra.
Certains codes ont également été modifiés pour paraître légèrement plus jolis.
API mises à jour prises en charge. API mises à jour :
Ne vous inquiétez pas, la prise en charge des données de correspondance arrive. Je voulais juste valider ces changements en premier, car ils avaient déjà des tests.
Correction du problème n°4 (oubli de changer un numéro, oups) et il était beaucoup moins probable que je le fasse à nouveau (déplacement d'une partie de la version API de l'URL vers une méthode différente juste pour être sûr de ne pas tout gâcher).
Il y a aussi maintenant des TESTS !! COURTISER! Tout le monde se réjouit. Ce ne sont pas de très bons tests, alors ne soyez pas trop excité. MAIS s'ils doivent détecter s'il y a un problème clair dans le wrapper API.
Oh et un meilleur formatage effectué (espaces et non tabulations, indentation plus cohérente, etc.). Il ne devrait y avoir aucune différence fonctionnelle.
Ajout de la prise en charge des proxys régionaux, car EUW s'est cassé sans cela
Car que signifient réellement les numéros de version de toute façon ?
En fait, ajoutez des points de terminaison à l'API de la ligue que j'ai juste oublié d'ajouter. Le changement n'est PAS rétrocompatible, toute utilisation des anciens appels API de la ligue devra être modifiée, en plus des changements d'émeute.
API nouvellement prises en charge : - league-v2.4 - team-v2.3
Correction d'un problème avec les appels statiques, à savoir qu'ils n'avaient rien fait juste avant. Maintenant, ils fonctionnent.
Mises à jour avec les dernières versions de l'API, les API désormais prises en charge sont :
Les modifications ne sont PAS rétrocompatibles, vous devrez mettre à jour tout code utilisant une ancienne version de l'API. Consultez la documentation Riots pour plus d'informations sur les modifications apportées.
Ajout de nouvelles méthodes Riots pour obtenir des équipes par identifiant. Dans les méthodes 'get_teams(team_ids, region)' et 'get_team(team_id, region)'.
Alpha uniquement, limitation de débit expérimentale ajoutée
Version initiale
RiotWatcher n'est pas approuvé par Riot Games et ne reflète pas les points de vue ou opinions de Riot Games ou de toute personne officiellement impliquée dans la production ou la gestion de League of Legends . League of Legends et Riot Games sont des marques commerciales ou des marques déposées de Riot Games, Inc. League of Legends (c) Riot Games, Inc.