Periksa dokumentasi lengkap (baca: sedikit lebih baik) di sini!
RiotWatcher adalah pembungkus tipis di atas Riot Games API untuk League of Legends. Semua metode publik pada 9/4/2024 didukung sepenuhnya.
RiotWatcher secara default mendukung pembatas kecepatan yang naif. Pembatas kecepatan ini akan mencoba menghentikan Anda membuat terlalu banyak permintaan, dan dalam lingkungan pengujian berulir tunggal, hal ini dapat dilakukan dengan cukup baik. Di lingkungan multithread, Anda mungkin masih mendapatkan kesalahan 429. 429 kesalahan saat ini TIDAK dicoba ulang untuk Anda.
Untuk menginstal RiotWatcher:
pip instal pengawas kerusuhan
ATAU untuk pengembangan/pengujian, kloning dan jalankan:
instalasi pip -e .[dev] instalasi pra-komit
Anda juga harus memiliki kunci API dari Riot. Dapatkan itu dari sini.
Semua metode mengembalikan kamus yang mewakili objek json yang dijelaskan oleh Riot API resmi. Setiap kesalahan HTTP yang dikembalikan oleh API dimunculkan sebagai pengecualian HTTPError dari perpustakaan Permintaan.
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
Perlu diingat saat menggunakan data dragon API dengan LolWatcher bahwa wilayahnya TIDAK sama dengan wilayah API lainnya. Secara khusus, wilayah berikut diganti namanya (saat tulisan ini dibuat):
API | naga naga |
eun1 | eune |
oc1 | laut |
Mulai 14/10/2021 (dan tampaknya, tanpa batas waktu), versi LolStatus API v3 dan v4 didukung oleh Riot. Oleh karena itu, RiotWatcher menyediakan metode untuk menggunakan keduanya. Secara default, API v3 akan digunakan untuk kompatibilitas mundur.
Untuk menggunakan API v4 secara default, gunakan perintah berikut untuk menginisialisasi instance LolWatcher Anda:
from riotwatcher import LolWatcher
lol_watcher = LolWatcher ( '<your-api-key>' , default_status_v4 = True )
# example call
matchlist = lol_watcher . lol_status . platform_data ( 'na1' )
Untuk menggunakan v4 atau v5 secara eksplisit selama periode penghentian, Anda dapat menggunakan properti berikut:
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' )
Catatan: ini tidak akan didukung setelah v3 tidak digunakan lagi! Properti lol_status_v3 dan lol_status_v4 akan dihapus, dan perubahan akan terjadi dengan sedikit peningkatan versi. Jika Anda menginginkan kompatibilitas mundur yang mulus, jangan gunakan properti ini.
RiotWatcher dapat berintegrasi dengan kernel server proxy/caching API. Hal ini dapat dilakukan dengan menyediakan parameter kernel_url
ke konstruktor LolWatcher
.
from riotwatcher import LolWatcher , ApiError
lol_watcher = LolWatcher ( kernel_url = "https://your-kernel-instance" ) # should not contain trailing slash
# use watcher as normal
Pengujian unit dapat dijalankan dengan perintah berikut dari folder RiotWatcher:
racun
Pembatas kecepatan memiliki beberapa kondisi balapan bila digunakan secara bersamaan.
Titik akhir penguasaan LoL Champion diperbarui untuk menggunakan puuid
LoL penonton v4 diganti dengan v5
Hapus dukungan untuk python3.7; tambahkan dukungan untuk python3.12
Tambahkan parameter start
ke API pencocokan TFT
Pemetaan ulang yang benar untuk wilayah Asia Tenggara
Tambahkan dukungan python 3.11 ke CI/CD
Menambahkan dukungan untuk LoL Challenges API
Menambahkan dukungan untuk memetakan ulang 'na1' -> 'americas' untuk titik akhir LoL Matchv5 dan TFT Match
Menghapus API Kode Pihak Ketiga LoL, seperti yang telah dihapus oleh kerusuhan
Memperbarui beberapa dokumentasi
Menambahkan metode naga semua versi.
Tambahkan dukungan untuk python 3.10, hapus dukungan untuk python 3.6
Menghapus properti match_v4 dan match_v5 dari LolWatcher. Gunakan properti kecocokan sekarang - akan menggunakan API v5.
Gunakan sesi http persisten untuk terhubung ke API.
Menambahkan parameter startTime dan endTime untuk api v5 pertandingan
Keanehan naga yang terdokumentasi
Perbaiki potensi masalah keamanan dengan beberapa pola penggunaan umum
Tambahkan API LolStatus-V4. Tidak menyadari hal ini ada sampai sekarang.
Tambahkan parameter kueri "antrian" dan "ketik" untuk api v5 pertandingan
Tambahkan dukungan untuk LoL MatchAPI v5
Tambahkan dukungan untuk API pertandingan terkini Valorant.
Tambahkan dukungan untuk LoR MatchAPI.
Tambahkan dukungan untuk Clash API
Tambahkan dukungan untuk Riot API generik melalui kelas Riotwatcher.RiotWatcher (catatan: kelas lama yang tidak digunakan lagi telah digunakan kembali - Anda telah diperingatkan)
Tambahkan dukungan untuk API yang gagah berani
Dokumentasi yang sudah dibersihkan. Cukup sedikit.
API LoR ditambahkan melalui kelas Riotwatcher.LorWatcher.
API TFT ditambahkan melalui kelas Riotwatcher.TftWatcher.
Menambahkan dukungan untuk API LoR melalui kelas Riotwatcher.LorWatcher.
Tidak ada lagi dukungan python 2. Akhirnya. Jika Anda memerlukan dukungan untuk python 2, silakan gunakan v2.7.1. Juga Python 3.5 tidak lagi didukung. Silakan gunakan 3.6 atau lebih baru.
kelas RiotWatcher.RiotWatcher sudah tidak digunakan lagi - Telah diganti namanya menjadi LolWatcher. Kelas RiotWatcher.RiotWatcher telah dipertahankan untuk kompatibilitas mundur, namun tidak akan ada selamanya.
Parameter custom_handler_chain untuk LolWatcher (sebelumnya RiotWatcher) sudah tidak ada lagi. Itu telah diganti dengan parameter rate_limiter, deserializer, dan error_handler. Ini adalah bagian dari tujuan untuk memisahkan API eksternal pengawas kerusuhan dari permintaan.
Menghapus kelas yang sudah lama tidak digunakan lagi.
Memperbaiki masalah penggunaan kernel di wilayah selain NA.
Tambahkan dukungan untuk menghubungkan ke kernel.
Pembersihan umum
Menghapus titik akhir v3 yang tidak digunakan lagi
Tambahkan dukungan untuk titik akhir entri/oleh-pemanggil liga v4 dan titik akhir entri/antrian/tingkat/divisi
Menambahkan log peringatan ketika titik akhir yang tidak digunakan lagi digunakan
Menambahkan dukungan untuk parameter batas waktu. Contoh:
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' )
Menambahkan dukungan API v4
Mengubah pengecualian menjadi pengecualian khusus (ApiError) dari pengecualian permintaan. Perubahan kompatibel hingga setidaknya versi v2.6. Setelah itu, menangkap HTTPError tidak akan mendukung loger.
PEMECAHAN:
RequestHandler.preview_static_request dan RequestHandler.after_static_request tidak lagi menerima versi dan lokal secara langsung sebagai parameter. Seharusnya menggunakan URL. API ini tidak berdokumen, namun secara teknis rusak karena beberapa perubahan terkait naga.
Mengalihkan pengujian untuk menggunakan pytest + tox dari unittest dan mengingat untuk menjalankan setiap versi python yang didukung.
Menambahkan pengukuran cakupan saat menjalankan pengujian.
Memindahkan sumber ke folder src.
Menambahkan tes integrasi.
Memindahkan penulisan URL ke dalam modul terpisah.
Menghapus StaticData API (RIP)
Menghapus champions.all dan champions.by_id (RIP)
Menambahkan dukungan DDragon API
Menambahkan dukungan untuk API rotasi juara
Memperbaiki masalah #88 (titik akhir daftar kecocokan terbaru tidak digunakan lagi)
Menghapus namespace dan API Riotewatcher.legacy. Harap (akhirnya) perbarui ke API v3.
Memperbaiki masalah #84 di mana titik akhir lama ada dalam contoh
Menambahkan titik akhir league.by_id
Memperbaiki beberapa masalah dokumentasi
Memperbaiki masalah #83 di mana batas bawah non-1 yang dikirim oleh kerusuhan akan menyebabkan pengecualian dan tidak ditangani dengan benar.
Juga menambahkan unit test ke kelas Limit. Karena ujiannya bagus.
API masteries dan rune yang dihapus sepenuhnya
Menambahkan API ThirdPartyCode
Memperbaiki beberapa kesalahan ketik dokumentasi
Mempelajari apa itu PyLint dan menggunakannya.
Antarmuka lama akan dihapus dengan versi non-perbaikan bug berikutnya. Saatnya beradaptasi dengan penggunaan antarmuka v3 yang tepat!
Batasan Tarif Layanan kini benar-benar dipatuhi!
Banyak perbaikan dokumen acak... hal-hal tidak menarik lainnya. dll.
Banyak perbaikan pada dokumentasi dan test runner otomatis (tidak ada versi pypi)
Memperbaiki kerusakan #80 (boolean tidak dikonversi ke huruf kecil dalam permintaan)
Dukungan Python 2
Memperbaiki banyak pelanggaran PEP dan memperbaiki format komentar.
memperbaiki bug pengemasan yang buruk sehingga semuanya tidak dapat digunakan. Ups.
dukungan API v3.
Refactor kode yang sangat besar, banyak panggilan lama yang rusak.
Pembatasan tarif ditambahkan secara default, dapat dihapus/diganti.
memperbaiki masalah dengan karakter khusus pada nama dalam metode get_summoners (masalah #28)
memperbaiki bug di API daftar pertandingan yang menyebabkan permintaan untuk musim lalu gagal, menambahkan konstanta untuk setiap kemungkinan musim. (masalah #44)
bug yang diperbaiki diperkenalkan dalam permintaan tarik #35 (metode yang diperiksa untuk pengecualian apa yang dilemparkan diubah dari apa yang didokumentasikan) - metode lama seharusnya berfungsi sekarang. (masalah #43)
menghapus fungsi riwayat pertandingan, karena fungsi ini sudah tidak digunakan lagi.
memperbaiki masalah dengan pengujian titik akhir daftar kecocokan gabungan memperbaiki masalah #24 di readme menambahkan konstanta petarung pasar gelap
memperbaiki masalah dengan __init__.py tidak mengimpor paket yang benar
Menambahkan api-game-v1.0 saat ini dan api-game-v1.0 unggulan
Memperbaiki bug/fitur tidak terdokumentasi saat mendapatkan satu pemanggil dengan spasi di namanya. Juga menambahkan metode statis RiotWatcher.sanitize_name(name)
untuk menghapus karakter khusus dari nama pemanggil.
Perubahan kecil, tanda tangan fungsi get_summoner diubah, untuk mendapatkan ID kata kuncinya sekarang _id
, bukan id
, pengujian diperbarui untuk mencerminkan hal ini
Beberapa konstanta permainan diperbarui, jika ada yang benar-benar menggunakannya.
Tambahkan API status lol. bukan hal yang besar tetapi saya punya waktu untuk melakukannya.
Menambahkan API Match dan MatchHistory! Juga agak diuji, tetapi parameter kueri tidak diuji.
Menambahkan beberapa konstanta baru. Mungkin tidak berguna, tapi siapa tahu. Mungkin seseorang akan menginginkannya.
Beberapa kode diubah agar terlihat sedikit lebih bagus juga.
API yang diperbarui didukung. API yang diperbarui:
Jangan khawatir, dukungan untuk data pertandingan akan segera hadir. Saya hanya ingin melakukan perubahan ini terlebih dahulu, karena sudah ada pengujian.
Memperbaiki masalah #4 (lupa mengubah nomor, ups) dan memperkecil kemungkinan saya melakukannya lagi (memindahkan bagian versi api dari url ke metode lain hanya untuk memastikan saya tidak mengacaukannya).
Sekarang juga ada UJI!! MERAYU! Semuanya bersukacita. Namun tes tersebut bukanlah tes yang bagus, jadi jangan terlalu bersemangat. TETAPI jika mereka harus mendeteksi apakah ada masalah yang jelas di pembungkus API.
Oh dan beberapa pemformatan yang lebih baik dilakukan (spasi bukan tab, lekukan lebih konsisten, dll.). Seharusnya tidak ada perbedaan fungsional sama sekali.
Menambahkan dukungan untuk proxy regional, karena EUW tidak akan berfungsi tanpa adanya proxy tersebut
Karena apa sebenarnya arti nomor versi?
Sebenarnya tambahkan titik akhir ke API liga yang saya lupa tambahkan. Perubahan TIDAK kompatibel dengan versi sebelumnya, penggunaan panggilan api liga lama apa pun perlu diubah, selain perubahan kerusuhan.
API yang baru didukung: - league-v2.4 - team-v2.3
Perbaiki masalah dengan panggilan statis, yaitu panggilan tersebut tidak melakukan apa pun dengan benar sebelumnya. Sekarang mereka bekerja.
Diperbarui ke versi API terbaru, API yang sekarang didukung adalah:
Perubahan TIDAK kompatibel, Anda perlu memperbarui kode apa pun yang menggunakan versi API lama. Periksa dokumentasi Riots untuk informasi lebih lanjut tentang perubahan apa saja yang dilakukan
Menambahkan metode baru Riots untuk mendapatkan tim berdasarkan id. Dalam metode 'get_teams(team_ids, region)' dan 'get_team(team_id, region)'.
Hanya alfa, batasan kecepatan eksperimental ditambahkan
Rilis awal
RiotWatcher tidak didukung oleh Riot Games dan tidak mencerminkan pandangan atau pendapat Riot Games atau siapa pun yang secara resmi terlibat dalam produksi atau pengelolaan League of Legends . League of Legends dan Riot Games adalah merek dagang atau merek dagang terdaftar dari Riot Games, Inc. League of Legends (c) Riot Games, Inc.