تحقق من الوثائق الكاملة (اقرأ: أفضل قليلاً) هنا!
RiotWatcher عبارة عن غلاف رفيع أعلى واجهة برمجة تطبيقات Riot Games للعبة League of Legends. جميع الطرق العامة اعتبارًا من 4/9/2024 مدعومة بالكامل.
يدعم RiotWatcher بشكل افتراضي محدد معدل ساذج. سيحاول محدد المعدل هذا منعك من تقديم عدد كبير جدًا من الطلبات، وفي بيئة اختبار مترابطة واحدة يقوم بذلك بشكل جيد إلى حد ما. في بيئة متعددة مؤشرات الترابط، قد لا يزال بإمكانك الحصول على حوالي 429 خطأ. لا تتم إعادة محاولة الأخطاء 429 لك حاليًا.
لتثبيت برنامج RiotWatcher:
نقطة تثبيت Riotwatcher
أو للتطوير/الاختبار والاستنساخ والتشغيل:
تثبيت النقطة -e .[dev] التثبيت المسبق
تحتاج أيضًا إلى الحصول على مفتاح API من Riot. احصل على ذلك من هنا.
تقوم جميع الطرق بإرجاع قواميس تمثل كائنات json التي وصفتها واجهة برمجة تطبيقات Riot الرسمية. يتم ظهور أية أخطاء 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
ضع في اعتبارك عند استخدام واجهات برمجة تطبيقات تنين البيانات مع LolWatcher أن المناطق ليست مماثلة لمناطق واجهة برمجة التطبيقات الأخرى. على وجه التحديد، تمت إعادة تسمية المناطق التالية (حتى كتابة هذا التقرير):
واجهة برمجة التطبيقات | com.ddragon |
eun1 | com.eune |
oc1 | ce |
اعتبارًا من 14/10/2021 (ومن حيث المظهر، إلى أجل غير مسمى)، فإن كلا الإصدارين v3 وv4 من LolStatus API مدعومان بواسطة 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' )
لاستخدام الإصدار 4 أو الإصدار 5 بشكل صريح أثناء فترة الإيقاف، يمكنك استخدام الخصائص التالية:
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' )
ملاحظة: لن يتم دعم هذا بعد إيقاف الإصدار 3 تمامًا! ستتم إزالة كل من خصائص lol_status_v3 وlol_status_v4، وسيحدث التغيير مع زيادة طفيفة في الإصدار. إذا كنت ترغب في التوافق السلس مع الإصدارات السابقة، فلا تستخدم هذه الخصائص.
يمكن أن يتكامل RiotWatcher مع نواة خادم الوكيل/التخزين المؤقت لواجهة برمجة التطبيقات. يمكن القيام بذلك عن طريق توفير المعلمة 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 spectator v4 بـ v5
إزالة الدعم لـ python3.7؛ إضافة مدعومة لـ python3.12
أضف معلمة start
إلى واجهة برمجة تطبيقات مطابقة TFT
إعادة رسم الخرائط الصحيحة لمنطقة البحر الأبيض المتوسط
أضف دعم python 3.11 إلى CI/CD
تمت إضافة دعم لواجهة برمجة تطبيقات LoL Challenges
تمت إضافة دعم لإعادة تعيين "na1" -> "الأمريكتين" لنقاط نهاية LoL Matchv5 وTFT Match
تمت إزالة واجهة برمجة تطبيقات LoL 3rd Party Code، حيث تمت إزالتها بواسطة أعمال الشغب
تم تحديث بعض الوثائق
تمت إضافة طريقة ddragon لجميع الإصدارات.
إضافة دعم لـ python 3.10، إزالة الدعم لـ python 3.6
تمت إزالة خصائص match_v4 وmatch_v5 من LolWatcher. استخدم خاصية المطابقة الآن - ستستخدم واجهة برمجة التطبيقات v5.
استخدم جلسة http المستمرة للاتصال بواجهة برمجة التطبيقات (API).
تمت إضافة معلمات startTime وendTime لواجهة برمجة التطبيقات v5 للمطابقة
غرابة ddragon موثقة
إصلاح مشكلة الأمان المحتملة مع بعض أنماط الاستخدام الشائعة
إضافة LolStatus-V4 API. لم أدرك أن هذا موجود حتى الآن.
أضف معلمات "قائمة الانتظار" و"النوع" للاستعلام لمطابقة الإصدار 5 من واجهة برمجة التطبيقات
إضافة دعم لـ LoL MatchAPI v5
إضافة دعم لواجهة برمجة التطبيقات الخاصة بالمطابقة الأخيرة لـ Valorant.
إضافة دعم لـ LoR MatchAPI.
إضافة دعم لواجهة برمجة تطبيقات Clash
أضف دعمًا لواجهات برمجة تطبيقات Riot العامة من خلال فئة Riotwatcher.RiotWatcher (ملاحظة: تمت إعادة استخدام الفئة القديمة المهملة - لقد تم تحذيرك)
إضافة دعم لواجهات برمجة التطبيقات الشجاعة
تنظيف الوثائق. قليلا جدا.
تمت إضافة واجهات برمجة تطبيقات LoR من خلال فئة Riotwatcher.LorWatcher.
تمت إضافة واجهات برمجة تطبيقات TFT من خلال فئة Riotwatcher.TftWatcher.
تمت إضافة دعم لواجهات برمجة تطبيقات LoR من خلال فئة Riotwatcher.LorWatcher.
لا مزيد من الدعم بيثون 2. أخيراً. إذا كنت بحاجة إلى دعم لـ python 2، فيرجى استخدام الإصدار 2.7.1. كما لم يعد Python 3.5 مدعومًا. يرجى استخدام 3.6 أو أحدث.
تم إيقاف فئة Riotwatcher.RiotWatcher - وتمت إعادة تسميتها إلى LolWatcher. تمت المحافظة على فئة Riotwatcher.RiotWatcher من أجل التوافق مع الإصدارات السابقة، ولكنها لن تكون موجودة إلى الأبد.
لم تعد المعلمة custom_handler_chain لـ LolWatcher (RiotWatcher سابقًا) موجودة. لقد تم استبداله بالمعلمات Rate_limiter وDeserializer وerror_handler. يعد هذا جزءًا من الهدف المتمثل في فصل واجهات برمجة التطبيقات الخارجية الخاصة بمراقبي الشغب عن الطلبات.
تمت إزالة الفئات المهملة منذ فترة طويلة.
تم إصلاح مشكلة استخدام kernel في مناطق أخرى غير 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. واجهة برمجة التطبيقات هذه غير موثقة، ولكنها معطلة تقنيًا بسبب بعض التغييرات المتعلقة بـ ddragon.
تم تبديل الاختبارات لاستخدام pytest + tox من Unittest وتذكر تشغيل كل إصدار مدعوم من python.
تمت إضافة قياسات التغطية عند إجراء الاختبارات.
تم نقل المصدر إلى مجلد src.
وأضاف اختبارات التكامل.
تم نقل كتابة عنوان URL إلى وحدات منفصلة.
تمت إزالة واجهة برمجة تطبيقات StaticData (RIP)
تمت إزالة Champions.all وChampions.by_id (RIP)
تمت إضافة دعم Ddragon API
تمت إضافة دعم لواجهة برمجة تطبيقات Champion Rotaion
تم إصلاح المشكلة رقم 88 (تم إهمال نقطة نهاية قائمة المطابقة الأخيرة)
تمت إزالة مساحة الاسم Rioewatcher.legacy وواجهة برمجة التطبيقات (API). الرجاء (أخيرًا) التحديث إلى v3 API.
تم إصلاح المشكلة رقم 84 حيث كانت نقطة النهاية القديمة موجودة في الأمثلة
تمت إضافة نقطة نهاية league.by_id
تم إصلاح بعض مشكلات التوثيق
تم إصلاح المشكلة رقم 83 حيث تؤدي الحدود الدنيا غير 1 التي ترسلها شركة Riot إلى حدوث استثناء بدلاً من التعامل معها بشكل صحيح.
تمت أيضًا إضافة اختبارات الوحدة إلى فئة الحد. لأن الاختبارات جيدة.
تمت إزالة واجهات برمجة التطبيقات الرئيسية والرونية بالكامل
تمت إضافة واجهة برمجة تطبيقات ThirdPartyCode
تم إصلاح بعض الأخطاء المطبعية في الوثائق
تعلمت ما هو PyLint واستخدمته.
ستتم إزالة الواجهة القديمة مع الإصدار التالي الذي لا يحتوي على إصلاح الأخطاء. حان الوقت للتكيف مع الاستخدام السليم لواجهات الإصدار 3!
لقد تم الآن احترام حدود أسعار الخدمة فعليًا!
مجموعة من إصلاحات المستندات العشوائية... أشياء أخرى غير مثيرة للاهتمام. إلخ.
العديد من الإصلاحات للوثائق وبرامج الاختبار التلقائي (لا يوجد إصدار pypi)
تم إصلاح العيب رقم 80 (لا يتم تحويل القيم المنطقية إلى أحرف صغيرة في الطلبات)
دعم بايثون 2
تم إصلاح مجموعة من انتهاكات PEP وتنسيق التعليقات الثابتة.
تم إصلاح خطأ التغليف السيئ الذي يجعل كل شيء غير قابل للاستخدام. أُووبس.
دعم واجهة برمجة التطبيقات v3.
عملية إعادة بناء ضخمة للكود، وتعطل العديد من المكالمات القديمة.
يتم إضافة تحديد المعدل بشكل افتراضي، ويمكن إزالته/استبداله.
تم إصلاح مشكلة الأحرف الخاصة في الأسماء في طريقة get_summoners (الإصدار رقم 28)
تم إصلاح الخلل في واجهة برمجة تطبيقات قائمة المطابقة التي تسببت في فشل طلبات المواسم الماضية، وإضافة ثوابت لكل موسم محتمل. (العدد رقم 44)
تم إصلاح الخلل الذي تم تقديمه في طلب السحب رقم 35 (طريقة التحقق من الاستثناء الذي تم طرحه تغيرت عما تم توثيقه) - يجب أن تعمل الطريقة القديمة الآن. (العدد رقم 43)
تمت إزالة وظائف سجل المطابقة، حيث تم إهمالها.
تم إصلاح المشكلة في اختبارات نقطة نهاية قائمة المطابقة المدمجة، تم إصلاح المشكلة رقم 24 في الملف التمهيدي المضاف إلى ثوابت مشاكسي السوق السوداء
تم إصلاح مشكلة عدم قيام __init__.py باستيراد الحزم الصحيحة
تمت إضافة واجهة برمجة تطبيقات اللعبة الحالية v1.0 والألعاب المميزة v1.0
تم إصلاح الخلل/الميزة غير الموثقة عند الحصول على مستدعي واحد به مسافة في الاسم. تمت إضافة أيضًا طريقة ثابتة RiotWatcher.sanitize_name(name)
لتجريد الأحرف الخاصة من أسماء المستدعي.
تغييرات صغيرة، تم تغيير توقيع وظيفة get_summoner، للحصول على المعرف، أصبحت الكلمة الأساسية الآن _id
، وليس id
، وتم تحديث الاختبارات لتعكس ذلك
تم تحديث بعض ثوابت اللعبة، إذا كان أي شخص يستخدمها بالفعل.
أضف واجهة برمجة تطبيقات حالة lol. ليس شيئًا كبيرًا ولكن كان لدي الوقت للقيام بذلك.
تمت إضافة واجهات برمجة تطبيقات Match وMatchHistory! يتم أيضًا اختبارها إلى حد ما، ولكن لم يتم اختبار معلمات الاستعلام.
تمت إضافة بعض الثوابت الجديدة. ربما ليست مفيدة، ولكن من يدري. ربما شخص ما سوف يريدهم.
تم تغيير بعض التعليمات البرمجية لتبدو أجمل قليلاً أيضًا.
دعم واجهات برمجة التطبيقات المحدثة. واجهات برمجة التطبيقات المحدثة:
لا تقلق، دعم بيانات المباراة قادم. أردت فقط تنفيذ هذه التغييرات أولاً، نظرًا لأنها كانت تحتوي على اختبارات بالفعل.
تم إصلاح المشكلة رقم 4 (نسيت تغيير رقم، عفوًا) وجعلت من غير المرجح أن أفعل ذلك مرة أخرى (نقل جزء إصدار واجهة برمجة التطبيقات من عنوان url إلى طريقة مختلفة فقط للتأكد من أنني لن أفسد الأمر).
هناك أيضًا اختبارات الآن!! واو! الجميع يفرحون. إنها ليست اختبارات جيدة جدًا، لذا لا تكن متحمسًا جدًا. ولكن إذا كان عليهم اكتشاف ما إذا كانت هناك مشكلة واضحة في غلاف واجهة برمجة التطبيقات.
أوه، وتم إجراء بعض التنسيقات بشكل أفضل (المسافات وليس علامات التبويب، والمسافات البادئة الأكثر اتساقًا، وما إلى ذلك). لا ينبغي أن يكون هناك فرق وظيفي على الإطلاق.
تمت إضافة دعم للوكلاء الإقليميين، لأن EUW انفصلت بدونه
لماذا تعني أرقام الإصدارات حقًا على أي حال؟
أضف بالفعل نقاط النهاية إلى واجهة برمجة تطبيقات الدوري التي نسيت إضافتها للتو. التغيير ليس متوافقًا مع الإصدارات السابقة، وسيلزم تغيير أي استخدام لاستدعاءات واجهة برمجة تطبيقات الدوري القديمة، بالإضافة إلى تغييرات الشغب.
واجهات برمجة التطبيقات المدعومة حديثًا: - league-v2.4 - team-v2.3
إصلاح مشكلة المكالمات الثابتة، أي أنها لم تفعل أي شيء بشكل صحيح من قبل. الآن يعملون.
تم التحديث إلى أحدث إصدارات واجهة برمجة التطبيقات، وواجهات برمجة التطبيقات المدعومة الآن هي:
التغييرات ليست متوافقة مع الإصدارات السابقة، وسوف تحتاج إلى تحديث أي رمز يستخدم إصدارًا قديمًا من واجهة برمجة التطبيقات (API). راجع وثائق Riots للحصول على مزيد من المعلومات حول التغييرات التي تم إجراؤها
تمت إضافة أساليب جديدة لشركة Riot للحصول على الفرق حسب المعرف. في الطرق "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.