Welcome to RiotWatcher's documentation!
=======================================
RiotWatcher is a thin wrapper on top of the `Riot Games API for League
of Legends `__. All public methods as
of 5/20/2023 are supported in full.
RiotWatcher by default supports a naive rate limiter. This rate limiter will
try to stop you from making too many requests, and in a single threaded test
environment does this rather well. In a multithreaded environment, you may
still get some 429 errors. 429 errors are currently NOT retried for you.
To Start...
-----------
To install RiotWatcher:
::
pip install riotwatcher
OR:
::
python setup.py install
You also need to have an API key from Riot. Get that from
`here `__.
Using it...
-----------
All methods return dictionaries representing the json objects described
by the official Riot API. Any HTTP errors that are returned by the API are
raised as HTTPError exceptions from the Requests library.
.. code:: python
from riotwatcher import LolWatcher, ApiError
lol_watcher = LolWatcher('')
my_region = 'na1'
me = lol_watcher.summoner.by_name(my_region, 'pseudonym117')
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.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
DataDragon
----------
Keep in mind when using data dragon APIs with LolWatcher that regions are NOT the same as the other API regions.
Specifically, the following regions are renamed (as of writing):
======== ===========
**API** **ddragon**
-------- -----------
eun1 eune
oc1 oce
======== ===========
Use with kernel
---------------
RiotWatcher can integrate with the API proxy/caching server `kernel `__.
This can be done by providing the ``kernel_url`` parameter to the ``LolWatcher`` constructor.
.. code:: python
from riotwatcher import LolWatcher, ApiError
lol_watcher = LolWatcher(kernel_url="https://your-kernel-instance") # should not contain trailing slash
# use watcher as normal
Main API and other topics
-------------------------
.. toctree::
:maxdepth: 1
riotwatcher/index.rst
riotwatcher/Handlers/index.rst
riotwatcher/testing.rst
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`