RiotWatcher 是英雄联盟 Riot Games API 之上的一个薄包装器。
项目描述
在此处检查完整(阅读:稍好)文档!
RiotWatcher 是针对英雄联盟的 Riot Games API 之上的一个薄包装器。完全支持截至 20222 年 6 月 28 日的所有公共方法。
RiotWatcher 默认支持一个简单的速率限制器。这个速率限制器会尝试阻止您发出过多的请求,并且在单线程测试环境中可以很好地做到这一点。在多线程环境中,您可能仍会遇到一些 429 错误。目前不会为您重试 429 错误。
开始…
要安装 RiotWatcher:
pip install riotwatcher
或用于开发/测试、克隆和运行:
pip install -e .[dev] pre-commit install
您还需要获得 Riot 的 API 密钥。从 这里得到。
使用它…
所有方法都返回表示官方 Riot API 描述的 json 对象的字典。API 返回的任何 HTTP 错误都会作为 HTTPError 异常从 Requests 库中引发。
from riotwatcher import LolWatcher, ApiError
lol_watcher = LolWatcher('<your-api-key>')
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.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 区域不同。具体来说,以下区域被重命名(截至撰写时):
API |
龙腾 |
恩1 |
尤恩 |
oc1 |
奥西 |
状态ApiV4
截至 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 文件夹中的以下命令运行单元测试:
tox
已知的问题
速率限制器在同时使用时有一些竞争条件。
变更日志
v3.2.3 - 2022 年 6 月 28 日增加了对英雄联盟挑战 API 的支持
v3.2.2 - 2022 年 4 月 25 日
为 LoL Matchv5 和 TFT Match 端点添加了对重新映射“na1”->“americas”的支持
已被 riot 删除的 LoL 3rd Party Code API 已移除
更新了一些文档
v3.2.1 - 2022 年 4 月 4 日
添加 ddragon 所有版本方法。
添加对 python 3.10 的支持,删除对 python 3.6 的支持
v3.2.0 - 2021 年 10 月 14 日
从 LolWatcher 中删除了 match_v4 和 match_v5 属性。现在使用 match 属性 - 将使用 v5 API。
使用持久的 http 会话连接到 API。
为 match v5 api 添加了 startTime 和 endTime 参数
记录在案的龙怪
修复一些常见使用模式的潜在安全问题
v3.1.4 - 2021 年 8 月 11 日
添加 LolStatus-V4 API。直到现在才意识到这存在。
v3.1.3 - 2021 年 8 月 5 日
为匹配 v5 api 添加查询“队列”和“类型”参数
v3.1.2 - 2021 年 7 月 4 日
添加对 LoL MatchAPI v5 的支持
v3.1.1 - 2020 年 10 月 4 日
添加对 Valorant 最近比赛 API 的支持。
添加对 LoR MatchAPI 的支持。
v3.1.0 - 2020 年 9 月 1 日
添加对 Clash API 的支持
通过 riotwatcher.RiotWatcher 类添加对通用 Riot API 的支持(注意:旧的不推荐使用的类已被重新利用 - 您已被警告)
添加对 valorant API 的支持
清理文档。相当多。
v3.0.0 - 2020 年 3 月 3 日
通过 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 与请求分离的目标的一部分。
删除了长期弃用的类。
v2.7.1 - 2019 年 7 月 31 日
修复了在 NA 以外的区域使用内核的问题。
v2.7.0 - 2019 年 7 月 30 日
添加对连接到内核的支持。
一般清理
v2.6.0 - 2019 年 5 月 7 日
删除了已弃用的 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')
v2.5.0 - 2019 年 1 月 7 日
添加了 v4 API 支持
将异常从请求异常更改为自定义异常 (ApiError)。至少在 v2.6 版本之前,更改是向后兼容的。之后,将不再支持捕获 HTTPError 的记录器。
打破:
RequestHandler.preview_static_request 和 RequestHandler.after_static_request 不再直接接收版本和语言环境作为参数。应改为使用 URL。此 API 未记录在案,但在技术上被一些 ddragon 相关更改破坏。
切换测试以使用来自 unittest 的 pytest + tox 并记住运行支持的每个 python 版本。
在运行测试时添加了覆盖率测量。
将源移动到 src 文件夹。
添加了集成测试。
将 URL 写入移动到单独的模块中。
删除了 StaticData API (RIP)
删除了 Champions.all 和 Champions.by_id (RIP)
v2.4.0 - 2018 年 8 月 23 日
添加了 DDragon API 支持
添加了对冠军轮换 API 的支持
v2.3.0 - 2018 年 6 月 3 日
修复了问题 #88(不推荐使用最近的匹配列表端点)
删除了 riotewatcher.legacy 命名空间和 API。请(最终)更新到 v3 API。
v2.2.2 - 2018 年 4 月 2 日
修复了问题 #84,其中旧端点在示例中
添加了league.by_id 端点
修复了一些文档问题
v2.2.1 - 2017 年 12 月 28 日
修复了问题 #83,其中 riot 发送的较低的非 1 限制会导致异常而不是正确处理。
还向 Limit 类添加了单元测试。因为测试很好。
v2.2.0 - 2017 年 12 月 1 日
完全移除天赋和符文 API
添加了第三方代码 API
修复了一些文档拼写错误
了解 PyLint 是什么并使用它。
旧版界面将在下一个非错误修复版本中删除。是时候适应 v3 接口的正确使用了!
v2.1.0 - 2017 年 10 月 9 日
服务速率限制现在实际上得到尊重!
一堆随机的文档修复……其他不有趣的东西。等等
v2.0.3 - 2017 年 10 月 3 日
对文档和自动测试运行器的许多修复(无 pypi 版本)
修复了缺陷 #80(布尔值在请求中未转换为小写)
v2.0.2 - 2017 年 7 月 25 日
Python 2 支持
修复了一堆 PEP 违规并修复了评论格式。
v2.0.1 - 2017 年 7 月 18 日
修复了令人讨厌的包装错误,导致一切都无法使用。哎呀。
v2.0.0 - 2017 年 7 月 18 日
v3 API 支持。
巨大的代码重构,许多旧调用被破坏。
默认添加的速率限制,可以删除/替换。
v1.3.2 - 2015 年 11 月 16 日
修复了 get_summoners 方法中名称中特殊字符的问题(问题 #28)
修复了 matchlist API 中导致过去赛季请求失败的错误,为每个可能的赛季添加了常量。(第 44 期)
修复了 pull request #35 中引入的错误(检查抛出的异常的方法与记录的不同) - 旧方法现在应该可以工作。(第 43 期)
v1.3.1 - 2015 年 10 月 24 日
删除了比赛历史功能,因为这些功能已被弃用。
v1.3 - 2015 年 7 月 29 日
- 合并拉取请求(在前一个日期完成,未更新更改日志):
使用匹配列表端点
使用克星草案
使用暴动归因
获得大师等级
修复了合并匹配列表端点测试的问题 修复了自述文件中的问题 #24 添加了黑市 brawlers 常量
v1.2.5 - 2015 年 3 月 8 日
修复了 __init__.py 未导入正确包的问题
v1.2.4 - 2015 年 2 月 13 日
添加了 current-game-v1.0 和 features-games-v1.0 api
v1.2.3 - 2014 年 12 月 31 日
修复了获得一个名字中带有空格的召唤师时的错误/未记录的功能。还添加了静态方法 RiotWatcher.sanitize_name(name)用于从召唤师名称中去除特殊字符。
v1.2.2 - 2014 年 12 月 22 日
微小的变化,get_summoner 的函数签名发生了变化,通过 ID 获取关键字现在是_id,而不是id,测试更新以反映这一点
更新了一些游戏常量,如果有人实际使用它们的话。
v1.2.1 - 2014 年 10 月 14 日
添加大声笑状态 API。不是一件大事,但我有时间去做。
v1.2 - 2014 年 9 月 4 日
添加了 Match 和 MatchHistory API!也经过了一些测试,但查询参数没有经过测试。
添加了一些新的常量。可能没用,但谁知道呢。也许有人会想要它们。
一些代码也更改为看起来更好一些。
v1.1.8 - 2014 年 9 月 4 日
支持更新的 API。更新的 API:
联赛-v2.5
团队-v2.4
别担心,对比赛数据的支持即将到来。我只想先提交这些更改,因为它们已经进行了测试。
v1.1.7 - 2014 年 8 月 10 日
修复了问题 #4(忘记更改数字,哎呀),并让我不太可能再次这样做(将 url 的 api 版本部分移动到不同的方法中,以确保我不会搞砸)。
现在也有测试!哇!大家乐此不疲。虽然它们不是很好的测试,所以不要太兴奋。但是他们是否应该检测 API 包装器中是否存在明显问题。
哦,还有一些更好的格式(空格不是制表符,更一致的缩进等)。应该完全没有功能差异。
v1.1.6 - 2014 年 6 月 19 日
添加了对区域代理的支持,因为没有它 EUW 就崩溃了
v1.1.5 - 2014 年 5 月 9 日
因为版本号到底意味着什么?
实际上将端点添加到我刚刚忘记添加的联盟 API。更改不向后兼容,除了 riot 更改之外,任何使用旧联盟 api 调用都需要更改。
新支持的 API:- League-v2.4 - team-v2.3
v1.1.1 - 2014 年 5 月 3 日
修复静态调用的问题,即他们之前没有做任何事情。现在他们工作了。
v1.1 - 2014 年 4 月 29 日
更新到最新的 API 版本,现在支持的 API 有:
冠军-v1.2
游戏-v1.3
联赛-v2.3
大声笑-静态-数据-v1.2
统计-v1.3
召唤师-v1.4
团队-v2.2
更改不向后兼容,您需要更新任何使用旧 API 版本的代码。查看Riots 文档以获取有关所做更改的更多信息
v1.0.2 - 2014 年 2 月 25 日
添加了 Riots 通过 id 获取团队的新方法。在方法 'get_teams(team_ids, region)' 和 'get_team(team_id, region)' 中。
v1.0.1a
仅限 Alpha,添加了实验性速率限制
v1.0
初始发行
归因
RiotWatcher 不受 Riot Games 的认可,也不反映 Riot Games 或任何正式参与制作或管理 英雄联盟的人的观点或意见。英雄联盟和 Riot Games 是 Riot Games, Inc. 的商标或注册商标 。英雄联盟(c) Riot Games, Inc.
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
riotwatcher -3.2.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 6a1a4f8245a0cbf88158dcbfe67a445e4d335dd0fc4375bd8f01d9a2922327df |