在這裡檢查完整的(閱讀:稍微好一點)文檔!
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. 的商標或註冊商標。