在这里检查完整的(阅读:稍微好一点)文档!
RiotWatcher 是英雄联盟 Riot Games API 之上的一个薄包装器。截至 2024 年 4 月 9 日,所有公共方法均得到完全支持。
RiotWatcher 默认情况下支持简单的速率限制器。该速率限制器将尝试阻止您发出太多请求,并且在单线程测试环境中可以很好地做到这一点。在多线程环境中,您仍然可能会收到一些 429 错误。目前不会为您重试 429 错误。
安装 RiotWatcher:
pip 安装 riotwatcher
或者用于开发/测试,克隆并运行:
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
请记住,在将数据龙 API 与 LolWatcher 一起使用时,该区域与其他 API 区域不同。具体来说,以下区域已重命名(截至撰写时):
应用程序编程接口 | 龙 |
恩1 | 尤尼 |
奥克1 | 奥西 |
截至 2021 年 10 月 14 日(从表面上看,无限期),Riot 支持 v3 和 v4 版本的 LolStatus API。因此,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 Champion 掌握端点更新为使用 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 3rd Party Code API(已被 riot 删除)
更新了一些文档
添加了龙龙所有版本的方法。
添加对 python 3.10 的支持,删除对 python 3.6 的支持
从 LolWatcher 中删除了 match_v4 和 match_v5 属性。现在使用匹配属性 - 将使用 v5 API。
使用持久 http 会话连接到 API。
为 match v5 api 添加了 startTime 和 endTime 参数
记录的龙的怪异
修复一些常见使用模式的潜在安全问题
添加LolStatus-V4 API。直到现在才意识到这个存在。
为匹配 v5 api 添加查询“queue”和“type”参数
添加对 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 相关的更改所破坏。
将测试切换为使用 unittest 中的 pytest + tox 并记住运行支持的每个 python 版本。
运行测试时添加了覆盖率测量。
将源代码移至 src 文件夹中。
添加了集成测试。
将 URL 写入移动到单独的模块中。
删除了静态数据 API (RIP)
删除了 Champions.all 和 Champions.by_id (RIP)
添加了 DDragon API 支持
添加了对冠军轮换 API 的支持
已修复问题 #88(最近的匹配列表端点已弃用)
删除了riotewatcher.legacy命名空间和API。请(最后)更新到 v3 API。
修复了示例中存在旧端点的问题 #84
添加 league.by_id 端点
修复了一些文档问题
修复了问题 #83,其中 riot 发送的较低非 1 限制会导致异常,而不是被正确处理。
还向 Limit 类添加了单元测试。因为测试效果很好。
完全删除了掌握和符文 API
添加了第三方代码 API
修复了一些文档拼写错误
了解了 PyLint 是什么并使用了它。
旧版界面将在下一个非错误修复版本中删除。是时候适应 v3 接口的正确使用了!
现在实际上遵守了服务费率限制!
一堆随机的文档修复...其他无趣的东西。 ETC。
对文档和自动测试运行程序的许多修复(无 pypi 版本)
修复了缺陷 #80(请求中布尔值未转换为小写)
Python 2 支持
修复了一系列 PEP 违规行为并修复了评论格式。
修复了令人讨厌的包装错误,导致所有内容都无法使用。哎呀。
v3 API 支持。
大量的代码重构,许多旧的调用被破坏。
默认添加的速率限制,可以删除/替换。
修复了 get_summoners 方法中名称中特殊字符的问题(问题 #28)
修复了比赛列表 API 中导致过去赛季请求失败的错误,为每个可能的赛季添加了常量。 (问题#44)
修复了拉取请求 #35 中引入的错误(检查抛出异常的方法与记录的内容不同) - 旧方法现在应该可以工作。 (问题#43)
删除了比赛历史记录功能,因为这些功能已被弃用。
修复了合并匹配列表端点测试的问题修复了自述文件中的问题 #24 添加了黑市 brawlers 常量
修复了 __init__.py 未导入正确包的问题
添加了 current-game-v1.0 和featured-games-v1.0 api
修复了获得名称中带有空格的单个召唤师时的错误/未记录的功能。还添加了静态方法RiotWatcher.sanitize_name(name)
用于从召唤者名称中删除特殊字符。
微小的变化, get_summoner 的函数签名发生了变化,要通过 ID 获取关键字现在是_id
,而不是id
,更新测试以反映这一点
一些游戏常数已更新,如果有人真正使用过它们的话。
添加 lol-status API。这不是一件大事,但我有时间去做。
添加了 Match 和 MatchHistory API!也进行了一些测试,但未测试查询参数。
添加了一些新常量。可能没用,但谁知道呢。也许有人会想要它们。
一些代码也进行了更改,看起来也稍微好一些。
支持更新的 API。更新的 API:
别担心,对比赛数据的支持即将到来。我只是想首先提交这些更改,因为他们已经进行了测试。
修复了问题#4(忘记更改数字,哎呀)并使我再次执行此操作的可能性大大降低(将 url 的 api 版本部分移至不同的方法只是为了确保我不会搞砸)。
现在还有测试!哇!众人皆大欢喜。不过,它们并不是很好的测试,所以不要太兴奋。但是他们是否应该检测 API 包装器中是否存在明显的问题。
哦,还有一些更好的格式(空格而不是制表符,更一致的缩进等)。应该没有任何功能差异。
添加了对区域代理的支持,因为没有它 EUW 就会崩溃
因为版本号到底意味着什么?
实际上将端点添加到我刚刚忘记添加的联盟 API 中。更改不向后兼容,除了防暴更改之外,任何旧联盟 API 调用的使用都需要更改。
新支持的 API: - league-v2.4 - team-v2.3
修复静态调用的问题,即它们之前没有执行任何操作。现在他们工作了。
更新到最新的 API 版本,现在支持的 API 包括:
更改不向后兼容,您将需要更新使用旧 API 版本的所有代码。查看 Riots 文档,了解有关所做更改的更多信息
添加了 Riots 新方法来通过 ID 获取团队。在方法“get_teams(team_ids,region)”和“get_team(team_id,region)”中。
仅 Alpha,添加了实验速率限制
初次发布
RiotWatcher 并未得到 Riot Games 的认可,也不反映 Riot Games 或正式参与制作或管理《英雄联盟》的任何人的观点或意见。 League of Legends和 Riot Games 是 Riot Games, Inc. 的商标或注册商标。League of Legends (c) Riot Games, Inc.