ตรวจสอบเอกสารฉบับเต็ม (อ่าน: ดีกว่าเล็กน้อย) ที่นี่!
RiotWatcher เป็น wrapper แบบบางที่อยู่เหนือ Riot Games API สำหรับ League of Legends วิธีการสาธารณะทั้งหมด ณ วันที่ 4/9/2024 ได้รับการรองรับอย่างเต็มรูปแบบ
RiotWatcher สนับสนุนตัวจำกัดอัตราไร้เดียงสาตามค่าเริ่มต้น ตัวจำกัดอัตรานี้จะพยายามหยุดคุณไม่ให้ส่งคำขอมากเกินไป และในสภาพแวดล้อมการทดสอบแบบเธรดเดียวก็ทำได้ค่อนข้างดี ในสภาพแวดล้อมแบบมัลติเธรด คุณอาจยังคงได้รับข้อผิดพลาด 429 บางอย่าง ข้อผิดพลาด 429 ยังไม่ได้ลองใหม่สำหรับคุณ
วิธีติดตั้ง RiotWatcher:
pip ติดตั้ง riotwatcher
หรือสำหรับการพัฒนา/การทดสอบ การโคลนและรัน:
pip ติดตั้ง -e .[dev] ติดตั้งล่วงหน้า
คุณต้องมีคีย์ API จาก Riot ด้วย รับสิ่งนั้นจากที่นี่
วิธีการทั้งหมดส่งคืนพจนานุกรมที่แสดงถึงวัตถุ json ที่อธิบายโดย Riot API อย่างเป็นทางการ ข้อผิดพลาด HTTP ใดๆ ที่ API ส่งคืนจะถูกยกให้เป็นข้อยกเว้น 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
โปรดทราบว่าเมื่อใช้ data dragon API กับ LolWatcher ภูมิภาคนั้นไม่เหมือนกับภูมิภาค API อื่นๆ โดยเฉพาะภูมิภาคต่อไปนี้จะถูกเปลี่ยนชื่อ (ในขณะที่เขียน):
เอพีไอ | ดีดราก้อน |
อึน1 | อีเน่ |
oc1 | โอซ |
ณ วันที่ 14/10/2021 (และจากรูปลักษณ์ภายนอก จะไม่มีกำหนด) Riot รองรับทั้ง LolStatus API เวอร์ชัน v3 และ v4 ด้วยเหตุนี้ 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/เคอร์เนลเซิร์ฟเวอร์แคชได้ ซึ่งสามารถทำได้โดยการจัดเตรียมพารามิเตอร์ kernel_url
ให้กับตัวสร้าง LolWatcher
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
เพิ่มพารามิเตอร์ start
ให้กับ TFT match API
การแมปใหม่ที่ถูกต้องสำหรับภูมิภาคเอเชียตะวันออกเฉียงใต้
เพิ่มการรองรับ python 3.11 ให้กับ CI/CD
เพิ่มการรองรับ LoL Challenges API
เพิ่มการรองรับสำหรับการรีแมป 'na1' -> 'americas' สำหรับ LoL Matchv5 และ TFT Match endpoints
ลบ LoL 3rd Party Code API ตามที่ถูกลบออกโดยการจลาจล
อัปเดตเอกสารบางส่วน
เพิ่มวิธีการ ddragon ทุกเวอร์ชัน
เพิ่มการรองรับสำหรับ python 3.10 ลบการรองรับสำหรับ python 3.6
ลบคุณสมบัติ match_v4 และ match_v5 ออกจาก LolWatcher ใช้คุณสมบัติการจับคู่ตอนนี้ - จะใช้ v5 API
ใช้เซสชัน http ถาวรเพื่อเชื่อมต่อกับ API
เพิ่มพารามิเตอร์ startTime และ endTime สำหรับการจับคู่ v5 api
บันทึกความแปลกประหลาดของ ddragon
แก้ไขปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นด้วยรูปแบบการใช้งานทั่วไปบางอย่าง
เพิ่ม LolStatus-V4 API ไม่ตระหนักว่าสิ่งนี้มีอยู่จนกระทั่งบัดนี้
เพิ่มพารามิเตอร์แบบสอบถาม "คิว" และ "ประเภท" สำหรับการจับคู่ v5 api
เพิ่มการรองรับ LoL MatchAPI v5
เพิ่มการรองรับ API การจับคู่ล่าสุดของ Valorant
เพิ่มการรองรับ LoR MatchAPI
เพิ่มการรองรับสำหรับ Clash API
เพิ่มการรองรับ Riot API ทั่วไปผ่านคลาส riotwatcher.RiotWatcher (หมายเหตุ: คลาสเก่าที่เลิกใช้แล้วได้ถูกนำมาใช้ใหม่ - คุณได้รับคำเตือนแล้ว)
เพิ่มการรองรับ valorant API
เคลียร์เอกสารเรียบร้อย ค่อนข้างน้อย.
LoR API ถูกเพิ่มผ่านคลาส riotwatcher.LorWatcher
TFT API ถูกเพิ่มผ่านคลาส riotwatcher.TftWatcher
เพิ่มการรองรับ LoR API ผ่านคลาส riotwatcher.LorWatcher
ไม่รองรับ python 2 อีกต่อไป ในที่สุด. หากคุณต้องการการสนับสนุนสำหรับ python 2 โปรดใช้ v2.7.1 นอกจากนี้ Python 3.5 ยังไม่ได้รับการสนับสนุนอีกต่อไป กรุณาใช้ 3.6 หรือใหม่กว่า
คลาส riotwatcher.RiotWatcher เลิกใช้แล้ว - เปลี่ยนชื่อเป็น LolWatcher แล้ว คลาส riotwatcher.RiotWatcher ได้รับการดูแลให้มีความเข้ากันได้แบบย้อนหลัง แต่จะไม่คงอยู่ตลอดไป
พารามิเตอร์ custom_handler_chain สำหรับ LolWatcher (ก่อนหน้านี้คือ RiotWatcher) ไม่มีอยู่แล้ว ถูกแทนที่ด้วยพารามิเตอร์ rate_limiter, deserializer และ error_handler นี่เป็นส่วนหนึ่งของเป้าหมายในการแยก API ภายนอกของ riotwatcher ออกจากคำขอ
ลบคลาสที่เลิกใช้มานานแล้ว
แก้ไขปัญหาการใช้เคอร์เนลในภูมิภาคอื่นที่ไม่ใช่ 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
สลับการทดสอบไปใช้ pytest + tox จาก unittest และจดจำให้รันแต่ละเวอร์ชันของ Python ที่รองรับ
เพิ่มการวัดความครอบคลุมเมื่อทำการทดสอบ
ย้ายแหล่งที่มาไปยังโฟลเดอร์ src
เพิ่มการทดสอบบูรณาการ
ย้ายการเขียน URL ลงในโมดูลที่แยกจากกัน
ลบ StaticData API (RIP) แล้ว
ลบ Champions.all และ Champions.by_id (RIP)
เพิ่มการรองรับ DDragon API
เพิ่มการรองรับสำหรับ API การหมุนเวียนแชมป์เปี้ยน
แก้ไขปัญหา #88 (จุดสิ้นสุดรายการจับคู่ล่าสุดเลิกใช้แล้ว)
ลบเนมสเปซและ API ของ riotewatcher.legacy โปรด (ในที่สุด) อัปเดตเป็น v3 API
แก้ไขปัญหา #84 ที่มีจุดสิ้นสุดแบบเก่าอยู่ในตัวอย่าง
เพิ่มจุดสิ้นสุด league.by_id
แก้ไขปัญหาเอกสารบางประการ
แก้ไขปัญหา #83 ซึ่งขีดจำกัดล่างที่ไม่ใช่ 1 ที่ส่งมาจากจลาจลจะทำให้เกิดข้อยกเว้นแทนที่จะได้รับการจัดการอย่างถูกต้อง
เพิ่มการทดสอบหน่วยในคลาส Limit ด้วย เพราะข้อสอบก็ดี
ลบ masteries และ runes APIs ออกโดยสิ้นเชิง
เพิ่ม ThirdPartyCode API
แก้ไขข้อผิดพลาดด้านเอกสารบางอย่าง
เรียนรู้ว่า PyLint คืออะไรและใช้มัน
อินเทอร์เฟซแบบเดิมจะถูกลบออกพร้อมกับเวอร์ชันที่ไม่มีการแก้ไขข้อบกพร่องถัดไป ถึงเวลาปรับตัวให้เข้ากับการใช้งานอินเทอร์เฟซ v3 อย่างเหมาะสม!
ขีดจำกัดอัตราค่าบริการเป็นที่เคารพแล้ว!
แก้ไขเอกสารแบบสุ่มมากมาย... สิ่งอื่นๆ ที่ไม่น่าสนใจ ฯลฯ
การแก้ไขเอกสารและตัวดำเนินการทดสอบอัตโนมัติมากมาย (ไม่มีเวอร์ชัน pypi)
แก้ไขข้อบกพร่อง #80 (บูลีนไม่ได้แปลงเป็นตัวพิมพ์เล็กในคำขอ)
รองรับหลาม 2
แก้ไขการละเมิด PEP จำนวนมากและแก้ไขรูปแบบความคิดเห็น
แก้ไขข้อผิดพลาดบรรจุภัณฑ์ที่น่ารังเกียจทำให้ทุกอย่างใช้งานไม่ได้ อ๊ะ.
รองรับ v3 API
การปรับโครงสร้างโค้ดครั้งใหญ่ การเรียกเก่าๆ หลายครั้งใช้งานไม่ได้
การจำกัดอัตราที่เพิ่มโดยค่าเริ่มต้น สามารถลบออก/แทนที่ได้
แก้ไขปัญหาเกี่ยวกับอักขระพิเศษในชื่อในวิธี get_summoners (ฉบับที่ #28)
แก้ไขข้อบกพร่องใน Matchlist API ที่ทำให้คำขอสำหรับฤดูกาลที่ผ่านมาล้มเหลว เพิ่มค่าคงที่สำหรับแต่ละฤดูกาลที่เป็นไปได้ (ฉบับที่ 44)
แก้ไขข้อบกพร่องที่แนะนำในคำขอดึง # 35 (วิธีการตรวจสอบข้อยกเว้นที่ถูกส่งออกไปเปลี่ยนจากสิ่งที่ได้รับการบันทึกไว้) - วิธีการเก่าควรใช้งานได้ในขณะนี้ (ฉบับที่ 43)
ลบฟังก์ชันประวัติการแข่งขันออก เนื่องจากสิ่งเหล่านี้เลิกใช้แล้ว
แก้ไขปัญหาด้วยการทดสอบจุดสิ้นสุดรายการจับคู่ที่ผสานรวม แก้ไขปัญหา #24 ใน readme เพิ่มค่าคงที่ของ brawlers ในตลาดมืด
แก้ไขปัญหา __init__.py ไม่นำเข้าแพ็คเกจที่ถูกต้อง
เพิ่ม current-game-v1.0 และ api ของเกมที่โดดเด่น-v1.0
แก้ไขข้อผิดพลาด/ฟีเจอร์ที่ไม่มีเอกสารเมื่อได้รับซัมมอนเนอร์คนเดียวที่มีช่องว่างในชื่อ เพิ่มวิธีการคงที่ RiotWatcher.sanitize_name(name)
เพื่อแยกอักขระพิเศษออกจากชื่อซัมมอนเนอร์
การเปลี่ยนแปลงเล็กๆ น้อยๆ ลายเซ็นฟังก์ชันของ get_summoner เปลี่ยนไป เพื่อให้ได้ตาม ID คำหลักตอนนี้คือ _id
ไม่ใช่ id
การทดสอบได้รับการอัปเดตเพื่อสะท้อนถึงสิ่งนี้
ค่าคงที่ของเกมบางตัวได้รับการอัปเดตหากใครเคยใช้งานจริง
เพิ่ม API สถานะ lol ไม่ใช่เรื่องใหญ่ แต่ฉันมีเวลาทำมัน
เพิ่ม Match และ MatchHistory APIs! มีการทดสอบบ้างเช่นกัน แต่ไม่ได้ทดสอบพารามิเตอร์การสืบค้น
เพิ่มค่าคงที่ใหม่บางส่วน อาจไม่มีประโยชน์ แต่ใครจะรู้ บางทีอาจมีคนต้องการพวกเขา
รหัสบางส่วนเปลี่ยนไปให้ดูดีขึ้นเล็กน้อยเช่นกัน
รองรับ API ที่อัปเดตแล้ว API ที่อัปเดต:
ไม่ต้องกังวล การรองรับข้อมูลการจับคู่กำลังจะมาถึง ฉันแค่อยากจะยอมรับการเปลี่ยนแปลงเหล่านี้ก่อน เนื่องจากมีการทดสอบอยู่แล้ว
แก้ไขปัญหา #4 (ลืมเปลี่ยนตัวเลข อ๊ะ) และทำให้มีโอกาสน้อยลงมากที่ฉันจะทำซ้ำอีกครั้ง (ย้ายส่วนเวอร์ชัน API ของ url ไปเป็นวิธีอื่นเพื่อให้แน่ใจว่าฉันจะไม่เลอะเทอะ)
ตอนนี้มีแบบทดสอบด้วย!! แอ่ว! ทุกคนชื่นชมยินดี แม้จะไม่ใช่การทดสอบที่ดีนัก ดังนั้นอย่าตื่นเต้นเกินไป แต่หากพวกเขาควรตรวจพบว่ามีปัญหาที่ชัดเจนใน Wrapper API หรือไม่
โอ้และมีการจัดรูปแบบที่ดีขึ้น (ช่องว่างไม่ใช่แท็บ การเยื้องที่สอดคล้องกันมากขึ้น ฯลฯ ) ไม่ควรมีความแตกต่างในการทำงานเลย
เพิ่มการรองรับผู้รับมอบฉันทะระดับภูมิภาค เนื่องจาก EUW พังหากไม่มีมัน
เพราะเหตุใดหมายเลขเวอร์ชันจึงหมายถึงอะไรจริงๆ
เพิ่มจุดสิ้นสุดให้กับ League API จริง ๆ แล้วฉันเพิ่งลืมเพิ่ม การเปลี่ยนแปลงเข้ากันไม่ได้แบบย้อนหลัง การใช้งานการเรียก API ของลีกแบบเก่าจะต้องมีการเปลี่ยนแปลง นอกเหนือจากการเปลี่ยนแปลงจลาจล
API ที่รองรับใหม่: - league-v2.4 - team-v2.3
แก้ไขปัญหาการโทรคงที่ กล่าวคือ พวกเขาไม่ได้ทำอะไรมาก่อน ตอนนี้พวกเขาทำงานแล้ว
อัปเดตเป็น API เวอร์ชันล่าสุด ขณะนี้ API ที่รองรับคือ:
การเปลี่ยนแปลงไม่สามารถเข้ากันได้แบบย้อนหลัง คุณจะต้องอัปเดตโค้ดใดๆ ที่ใช้ API เวอร์ชันเก่า ตรวจสอบเอกสาร Riots เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้น
เพิ่มวิธีการใหม่ของ Riots เพื่อรับทีมด้วย ID ในวิธีการ 'get_teams(team_ids, ภูมิภาค)' และ 'get_team(team_id, ภูมิภาค)'
เฉพาะอัลฟ่า เพิ่มการจำกัดอัตราการทดลองแล้ว
การเปิดตัวครั้งแรก
RiotWatcher ไม่ได้รับการรับรองจาก Riot Games และไม่ได้สะท้อนถึงมุมมองหรือความคิดเห็นของ Riot Games หรือใครก็ตามที่เกี่ยวข้องอย่างเป็นทางการในการผลิตหรือจัดการ League of Legends League of Legends และ Riot Games เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Riot Games, Inc. League of Legends (c) Riot Games, Inc.