Skip to main content

RiotWatcher 是英雄联盟 Riot Games API 之上的一个薄包装器。

项目描述

PyPi 上发布的最新版本 文件状态 测试覆盖率 代码质量 代码风格

在此处检查完整(阅读:稍好)文档!

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 (35.3 kB 查看哈希

已上传 source

内置分布

riotwatcher-3.2.3-py3-none-any.whl (58.9 kB 查看哈希)

已上传 py3