完全な (少し改良された) ドキュメントをここで確認してください。
RiotWatcher は、League of Legends 用の Riot Games API の上にある薄いラッパーです。 2024 年 4 月 9 日の時点で、すべてのパブリック メソッドが完全にサポートされています。
RiotWatcher はデフォルトで単純なレート リミッターをサポートします。このレート リミッターは、リクエストが多すぎるのを阻止しようとします。シングル スレッドのテスト環境では、これがかなりうまく機能します。マルチスレッド環境では、依然として 429 エラーが発生する可能性があります。 429 エラーは現在再試行されません。
RiotWatcher をインストールするには:
pip インストール riotwatcher
または、開発/テストの場合は、クローンを作成して実行します。
pip install -e .[dev] プリコミットインストール
Riot からの API キーも必要です。ここから入手してください。
すべてのメソッドは、公式 Riot API で記述された json オブジェクトを表す辞書を返します。 API によって返される HTTP エラーは、Requests ライブラリから 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
LolWatcher でデータ ドラゴン API を使用する場合は、リージョンが他の API リージョンと同じではないことに注意してください。具体的には、次のリージョンの名前が変更されます (執筆時点)。
API | ドラゴン |
ウン1 | ウネ |
oc1 | オセ |
2021 年 10 月 14 日の時点で (見た目からすると無期限に)、LolStatus API の v3 バージョンと v4 バージョンの両方が Riot でサポートされています。そのため、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 地域の正しい再マッピング
Python 3.11 サポートを CI/CD に追加
LoL チャレンジ API のサポートを追加しました
LoL Matchv5 および TFT Match エンドポイントの「na1」 -> 「americas」の再マッピングのサポートを追加しました
riot によって削除されたように、LoL サードパーティ コード API を削除しました
いくつかのドキュメントを更新しました
ddragon の全バージョンのメソッドを追加しました。
Python 3.10 のサポートを追加、Python 3.6 のサポートを削除
LolWatcher から match_v4 プロパティと match_v5 プロパティを削除しました。今すぐ match プロパティを使用します - v5 API を使用します。
API に接続するには永続的な http セッションを使用します。
match v5 API に startTime および endTime パラメータを追加しました
ddragon の奇妙さを文書化
いくつかの一般的な使用パターンによる潜在的なセキュリティ問題を修正
LolStatus-V4 API を追加します。今までこれの存在に気づきませんでした。
一致 v5 API のクエリ「キュー」パラメータと「タイプ」パラメータを追加
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 の書き込みを別のモジュールに移動しました。
StaticData API (RIP) を削除しました
Champions.all と Champions.by_id を削除しました (RIP)
DDragon API サポートを追加しました
チャンピオンローテーションAPIのサポートを追加しました
問題 #88 を修正しました (最近のマッチリスト エンドポイントは非推奨になりました)
riotewatcher.legacy 名前空間と API を削除しました。 (最終的に) v3 API に更新してください。
例に古いエンドポイントが含まれていた問題 #84 を修正しました
League.by_id エンドポイントを追加しました
いくつかのドキュメントの問題を修正しました
riot によって送信された 1 以外の下限が正しく処理されずに例外が発生する問題 #83 を修正しました。
また、単体テストを Limit クラスに追加しました。テストが良いからです。
マスタリーとルーン API を完全に削除
ThirdPartyCode API を追加しました
いくつかのドキュメントのタイプミスを修正しました
PyLint とは何かを学び、それを使用しました。
レガシー インターフェイスは、バグ修正されていない次のバージョンで削除される予定です。 v3 インターフェイスの適切な使用法に適応する時期が来ました。
サービスレート制限が実際に遵守されるようになりました。
ランダムなドキュメント修正の束...その他の興味のないもの。等
ドキュメントと自動テストランナーに対する多くの修正 (pypi バージョンなし)
修正された問題 #80 (リクエストでブール値が小文字に変換されない)
Python 2 のサポート
多数の PEP 違反を修正し、コメント形式を修正しました。
すべてが使用できなくなる厄介なパッケージングのバグを修正しました。おっと。
v3 API のサポート。
コードの大規模なリファクタリング、多くの古い呼び出しが壊れています。
レート制限はデフォルトで追加されますが、削除または置き換えることができます。
get_summoners メソッドの名前に特殊文字が含まれる問題を修正しました (問題 #28)
過去のシーズンのリクエストが失敗する原因となっていたマッチリスト API のバグを修正し、可能なシーズンごとに定数を追加しました。 (問題 #44)
プル リクエスト #35 で導入されたバグを修正しました (どの例外がスローされるかをチェックする方法が文書化されたものから変更されました) - 古い方法が機能するようになりました。 (問題 #43)
マッチ履歴関数は非推奨となったため、削除されました。
マージされたマッチリスト エンドポイント テストに関する問題を修正しました。Readme の問題 #24 を修正しました。ブラック マーケット ブローラーの定数を追加しました。
__init__.py が正しいパッケージをインポートしない問題を修正しました
current-game-v1.0 および featuring-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: - リーグ v2.4 - チーム v2.3
静的呼び出しに関する問題、つまり直前に何も実行されなかった問題を修正します。今では彼らは働いています。
最新の API バージョンに更新され、現在サポートされている API は次のとおりです。
変更には下位互換性がないため、古い API バージョンを使用していたコードを更新する必要があります。加えられた変更の詳細については、Riots のドキュメントを確認してください。
ID でチームを取得する新しいメソッドを Riot に追加しました。メソッド「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.