Полную (читай: немного улучшенную) документацию можно найти здесь!
RiotWatcher — это тонкая оболочка поверх API Riot Games для League of Legends. Все общедоступные методы по состоянию на 9 апреля 2024 г. поддерживаются полностью.
RiotWatcher по умолчанию поддерживает простой ограничитель скорости. Этот ограничитель скорости попытается помешать вам делать слишком много запросов, и в однопоточной тестовой среде он делает это довольно хорошо. В многопоточной среде вы все равно можете получить ошибку 429. Ошибка 429 в настоящее время НЕ повторяется.
Чтобы установить RiotWatcher:
pip установить riotwatcher
ИЛИ для разработки/тестирования клонируйте и запустите:
pip install -e .[dev] предварительная установка
Вам также понадобится ключ API от Riot. Получите это отсюда.
Все методы возвращают словари, представляющие объекты json, описанные официальным API Riot. Любые ошибки HTTP, возвращаемые API, вызываются как исключения 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
При использовании API-интерфейсов Data Dragon с LolWatcher имейте в виду, что регионы НЕ совпадают с другими регионами API. В частности, переименованы следующие регионы (на момент написания):
API | дракон |
Ын1 | Юн |
oc1 | Оке |
По состоянию на 14.10.2021 (и, судя по всему, на неопределенный срок) Riot поддерживает версии v3 и v4 API LolStatus. Таким образом, RiotWatcher предоставляет возможность использовать оба варианта. По умолчанию для обратной совместимости будет использоваться API v3.
Чтобы использовать API версии 4 по умолчанию, используйте следующее для инициализации экземпляра 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' )
Чтобы явно использовать версию 4 или 5 в течение периода устаревания, вы можете использовать следующие свойства:
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' )
Примечание: это не будет поддерживаться после того, как версия 3 полностью устареет! Оба свойства lol_status_v3 и lol_status_v4 будут удалены, а изменение произойдет при незначительном увеличении версии. Если вам нужна обратная совместимость, не используйте эти свойства.
RiotWatcher может интегрироваться с ядром прокси-сервера API/кэширования. Это можно сделать, предоставив параметр kernel_url
конструктору LolWatcher
.
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 Champion обновлены для использования puuid.
LoL spectator v4 заменен на v5
Удалить поддержку Python3.7; добавить поддержку для python3.12
Добавить start
параметр в API сопоставления TFT
Правильное переназначение для региона SEA.
Добавьте поддержку Python 3.11 в CI/CD.
Добавлена поддержка API LoL Challenges.
Добавлена поддержка переназначения «na1» -> «Америка» для конечных точек LoL Matchv5 и TFT Match.
Удален API стороннего кода LoL, который был удален riot.
Обновлена некоторая документация
Добавлен метод ddragon для всех версий.
Добавить поддержку Python 3.10, удалить поддержку Python 3.6.
Удалены свойства match_v4 и match_v5 из LolWatcher. Использовать свойство match сейчас — будет использоваться API версии 5.
Используйте постоянный сеанс http для подключения к API.
Добавлены параметры startTime и endTime для соответствия API v5.
Документированная странность ddragon
Устраните потенциальную проблему безопасности с некоторыми распространенными шаблонами использования.
Добавьте API LolStatus-V4. До сих пор не осознавал, что это существует.
Добавьте параметры запроса «очередь» и «тип» для соответствия API v5.
Добавить поддержку LoL MatchAPI v5.
Добавьте поддержку API недавних матчей Valorant.
Добавить поддержку LoR MatchAPI.
Добавить поддержку Clash API
Добавить поддержку универсальных API Riot через класс riotwatcher.RiotWatcher (примечание: старый устаревший класс был перепрофилирован — вас предупредили).
Добавить поддержку API valorant.
Почистили документацию. Совсем немного.
API-интерфейсы LoR добавлены через класс riotwatcher.LorWatcher.
API TFT добавлены через класс riotwatcher.TftWatcher.
Добавлена поддержка API LoR через класс riotwatcher.LorWatcher.
Больше нет поддержки Python 2. Окончательно. Если вам нужна поддержка Python 2, используйте версию 2.7.1. Также Python 3.5 больше не поддерживается. Пожалуйста, используйте версию 3.6 или новее.
Класс riotwatcher.RiotWatcher устарел — он был переименован в LolWatcher. Класс riotwatcher.RiotWatcher поддерживается для обратной совместимости, но не будет существовать вечно.
Параметр custom_handler_chain для LolWatcher (ранее RiotWatcher) больше не существует. Он был заменен параметрамиrate_limiter, deserializer и error_handler. Это часть цели по отделению внешних API riotwatcher от запросов.
Удалены давно устаревшие классы.
Исправлена проблема с использованием ядра в регионах, отличных от NA.
Добавить поддержку подключения к ядру.
Генеральная уборка
Удалены устаревшие конечные точки версии 3.
Добавлена поддержка конечных точек входа в лигу 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' )
Добавлена поддержка API v4.
Изменены исключения на пользовательские исключения (ApiError) из исключений запросов. Изменение обратно совместимо как минимум до версии v2.6. После этого перехват HTTPError не будет поддерживаться.
СРОЧНО:
RequestHandler.preview_static_request и RequestHandler.after_static_request больше не получают версию и локаль непосредственно в качестве параметров. Вместо этого следует использовать URL. Этот API недокументирован, но технически сломан некоторыми изменениями, связанными с ddragon.
Переключены тесты на использование pytest + tox из unittest и не забываем запускать каждую поддерживаемую версию Python.
Добавлены измерения покрытия при запуске тестов.
Источник перемещен в папку src.
Добавлены интеграционные тесты.
Написание URL-адресов вынесено в отдельные модули.
Удален StaticData API (RIP).
Удалены Champions.all и Champions.by_id (RIP).
Добавлена поддержка API DDragon.
Добавлена поддержка API ротации чемпионов.
Исправлена проблема № 88 (последняя конечная точка списка совпадений устарела).
Удалены пространство имен и API riotewatcher.legacy. Пожалуйста (наконец-то) обновите API v3.
Исправлена проблема № 84, из-за которой в примерах была старая конечная точка.
Добавлена конечная точка League.by_id.
Исправлено несколько проблем с документацией.
Исправлена проблема № 83, из-за которой отправленные Riot более низкие ограничения, отличные от 1, приводили к исключению вместо правильной обработки.
Также добавлены модульные тесты в класс Limit. Потому что тесты хорошие.
Полностью удалены API мастерства и рун.
Добавлен API ThirdPartyCode.
Исправлены некоторые опечатки в документации.
Узнал, что такое PyLint, и использовал его.
Устаревший интерфейс будет удален в следующей версии без исправлений. Время адаптироваться к правильному использованию интерфейсов v3!
Ограничения по тарифам на услуги теперь действительно соблюдаются!
Куча случайных исправлений документации... прочие неинтересные вещи. и т. д.
Множество исправлений в документации и автоматических средствах запуска тестов (без версии pypi).
Исправлен дефект №80 (логические значения не преобразуются в нижний регистр в запросах).
Поддержка Python 2
Исправлено множество нарушений PEP и исправлен формат комментариев.
исправлена неприятная ошибка упаковки, из-за которой все было непригодно для использования. Упс.
Поддержка API v3.
Огромный рефакторинг кода, многие старые вызовы сломаны.
Ограничение скорости, добавленное по умолчанию, можно удалить/заменить.
исправлена проблема со специальными символами в именах в методе get_summoners (issue #28)
исправлена ошибка в API списка матчей, приводившая к сбою запросов прошлых сезонов, добавлены константы для каждого возможного сезона. (выпуск №44)
исправлена ошибка, возникшая в запросе на извлечение № 35 (метод проверки того, какое исключение выдается, изменен по сравнению с тем, что было задокументировано) - теперь старый метод должен работать. (выпуск №43)
удалены функции истории матчей, поскольку они устарели.
исправлена проблема с объединенными тестами конечных точек списка совпадений; исправлена проблема № 24 в файле readme; добавлены константы скандалистов черного рынка.
исправлена проблема, из-за которой __init__.py не импортировал правильные пакеты
Добавлены API-интерфейсы current-game-v1.0 и Featured-games-v1.0.
Исправлена ошибка/недокументированная функция при получении одного призывателя с пробелом в имени. Также добавлен статический метод RiotWatcher.sanitize_name(name)
для удаления специальных символов из имен призывателей.
Небольшие изменения, изменена сигнатура функции get_summoner, для получения по идентификатору теперь используется ключевое слово _id
, а не id
, тесты обновлены, чтобы отразить это.
Обновлены некоторые игровые константы, если кто-то их действительно использовал.
Добавьте API лол-статуса. ничего особенного, но у меня было время это сделать.
Добавлены API Match и MatchHistory! Также несколько тестируются, но параметры запроса не проверяются.
Добавлено несколько новых констант. Возможно, это бесполезно, но кто знает. Может быть, кто-то захочет их.
Некоторый код также изменился, чтобы выглядеть немного лучше.
Поддерживаются обновленные API. Обновленные API:
Не волнуйтесь, скоро появится поддержка данных о матчах. Я просто хотел сначала зафиксировать эти изменения, поскольку у них уже были тесты.
Исправлена проблема № 4 (забыл изменить число, упс), и у меня было гораздо меньше шансов сделать это снова (переместил часть URL-адреса версии API в другой метод, просто чтобы быть уверенным, что я не испорчу его).
Также теперь есть ТЕСТЫ!! УУУ! Все радуются. Однако это не очень хорошие тесты, так что не волнуйтесь. НО, если они должны обнаружить, есть ли явная проблема в оболочке API.
Да, и улучшено форматирование (пробелы, а не табуляции, более последовательные отступы и т. д.). Функциональной разницы вообще быть не должно.
Добавлена поддержка региональных прокси, т.к. без нее EUW сломался
Ведь что на самом деле означают номера версий?
На самом деле добавьте конечные точки в API лиги, которые я просто забыл добавить. Изменение НЕ имеет обратной совместимости, любое использование вызовов API старой лиги необходимо будет изменить в дополнение к изменениям riot.
Новые поддерживаемые API: - League-v2.4 - Team-v2.3.
Исправлена проблема со статическими вызовами, а именно: раньше они ничего не делали. Теперь они работают.
Обновлено до последних версий API. Теперь поддерживаются следующие API:
Изменения НЕ имеют обратной совместимости, вам придется обновить любой код, в котором использовалась старая версия API. Дополнительную информацию о внесенных изменениях можно найти в документации Riots.
Добавлены новые методы Riots для получения команд по идентификатору. В методах get_teams(team_ids,region) и get_team(team_id,region).
Только альфа-версия, добавлено экспериментальное ограничение скорости.
Первоначальный выпуск
RiotWatcher не одобрен Riot Games и не отражает взгляды или мнения Riot Games или кого-либо, официально участвующего в создании или управлении League of Legends . League of Legends и Riot Games являются товарными знаками или зарегистрированными товарными знаками Riot Games, Inc. League of Legends (c) Riot Games, Inc.