ما هي وظيفة واجهة برمجة التطبيقات OpenF1 وكيفية الحصول على أقصى استفادة منها؟

آخر تحديث: 13/10/2025
نبذة عن الكاتب: إسحاق
  • يقدم OpenF1 بيانات F1 التاريخية المباشرة مجانًا مع OAuth2
  • نقاط النهاية الكاملة: اللفات، والفترات، والراديو، والتحكم، والطقس
  • مرشحات قوية ومخرجات JSON/CSV و متدفق MQTT/مقابس الويب

بيانات صيغة 1 لواجهة برمجة تطبيقات OpenF1

يتم استخدام واجهة برمجة التطبيقات OpenF1 لتقديم بيانات الفورمولا 1 في الوقت الفعلي والتاريخي مفتوح المصدر، يُسهّل على المطورين والمحللين إنشاء لوحات معلومات، وأتمتة التنبيهات، ودراسة الاستراتيجيات، أو إنشاء أجهزة متصلة تتفاعل مع الأحداث على المسار. يُشكّل اقتراحه جسرًا بين القياس عن بُعد والتطبيقات: يُمكن الاستعلام عنه عبر HTTP، وتصفيته حسب المعلمات، كما يسمح بتدفق البيانات.

إذا كنت تتساءل عن كيفية اختلافه عن الحلول الأخرى، فإن المفتاح هو نهجه المفتوح والعملي: بيانات تاريخية مجانية بدون مصادقة، والوصول إلى الدفع في الوقت الفعلي (عند الطلب)، وطرق استهلاك متعددة (REST وMQTT وWebSockets). مصدر البيانات هو livetiming.formula1.comوعلى الرغم من أن OpenF1 هو مشروع غير رسمي، إلا أنه يجمع معلومات قيمة للغاية مثل أوقات اللفة، بيانات السيارة، الاتصالات اللاسلكية، ومراقبة السباق، والأرصاد الجوية، والمهام، والمواقف وأكثر من ذلك بكثير.

ما هو OpenF1 وماذا يقدم لك؟

OpenF1 هي واجهة برمجة التطبيقات مجاني ومفتوح المصدر الذي يعرض بيانات الفورمولا 1 ليتمكن أي شخص من استكشاف المنافسة من منظور فني وقابل للتكرار. الهدف هو تسهيل إنشاء لوحات معلومات تفاعلية، وتحليل متعمق للمسار المهني أو حتى أدوات تُضيء عندما يتجاوز سائقك المفضل سيارة أخرى أو يُفعّل نظام تقليل السحب (DRS). إنه بديل مستوحى من نظام فاست اف 1مع ميزة العرض البيانات المباشرة أثناء الجلسات (للحسابات التي لديها إمكانية الوصول) بالإضافة إلى السلسلة التاريخية.

يجب أخذ فروقتين تشغيليتين في الاعتبار: قد تكون بعض نقاط النهاية لا تبث مباشرة أثناء الجلسة ونُشرت بعد ذلك بفترة وجيزة (مثل بيانات السيارة، أو الفواصل الزمنية، أو الموقع)، ويتطلب الوصول المباشر حسابًا مدفوعًا. على أي حال، السجل مجاني ويمكن الوصول إليه عبر JSON أو CSV بدون مصادقة، مثالي لبدء النماذج الأولية بدون احتكاك.

نقاط نهاية OpenF1 والبث

حالات الاستخدام الشائعة

باستخدام OpenF1، يمكنك إنشاء لوحة توقيت من الصفر لعرض اللفات والقطاعات والفجوات والفواصل الزمنيةمُحسّنة براديو الفريق وفعاليات التحكم في السباق. أضف رسومًا بيانية للسرعة القصوى، أو عدد دورات المحرك في الدقيقة، أو التروس، وستحصل على عرض قياس عن بُعد أساسي لمقارنة فترات القيادة والسائقين.

في بيئات التحليلات، سوف تعبر أوقات اللفة والمركبات وعمر الإطارات للتحقيق في عمليات التخفيض، وتخفيض الإصدار، ونوافذ الإغلاق. يمكنك أيضًا أتمتة التنبيهات عن طريق الأعلام، VSC/SC أو التغييرات في الموضع، فضلاً عن تسجيل ظروف المسار والرياح التي تؤثر على السرعة.

إذا كنت تحب الأجهزة المتصلة، فإن البث عبر MQTT/WebSockets سيسمح لك بتشغيلها مصابيح LED، إشعارات على الهواتف المحمولة أو تفعيل التأثيرات عند تجاوز أو ظهور علم أصفر. يناسب نهج "واجهة برمجة التطبيقات أولاً" الخدمات المصغرة تمامًا كما هو الحال في التطبيقات جبهة التي تستهلك البيانات المجمعة.

بنية واجهة برمجة التطبيقات REST: نقاط النهاية وما تقدمه

يتم تنظيم واجهة برمجة تطبيقات REST حسب موارد الموضوع. تدعم كل نقطة نهاية المرشحات حسب المعلمات (بما في ذلك عوامل تشغيل مثل >، <، >=، <=) ويُرجع البيانات بصيغة JSON أو CSV (بإضافة csv=true). فيما يلي نظرة عامة شاملة على ما يغطيه كل مسار رئيسي.

بيانات السيارة

تعرض نقطة نهاية بيانات السيارة متغيرات السيارة عند حوالي 3,7 هرتز (السرعة، عدد الدورات في الدقيقة، التروس...). قد لا تكون متاحة في الجلسات المباشرة ونُشرت بعد ذلك بوقت قصير. رابط القاعدة: GET https://api.openf1.org/v1/car_data.

  • فرامل: دواسة الفرامل (تم الضغط على 100، ولم يتم الضغط على 0).
  • تاريخ:UTC فوري في ISO 8601.
  • رقم السائق: رقم الطيار الفريد.
  • دائرة الاستعلام والأمن:حالة DRS (التعيينات المعروفة: 0/1 إيقاف، 8 مؤهلة تم اكتشافها، 10/12/14 تشغيل؛ القيم الأخرى مشكوك فيها).
  • مفتاح الاجتماع: معرف الاجتماع (يمكنك استخدام آخر).
  • ن_جير:الترس 1–8 (0 محايد).
  • دورة في الدقيقة: دورة في الدقيقة.
  • مفتاح الجلسة: معرف الجلسة (يدعم آخر).
  • سرعة: كم/ساعة.
  • خنق: % الخانق.
  ملفات jpg كبيرة الحجم. ما هي، وكيف يتم فتحها، وكيف يمكنك تنزيل الصور

هناك خريطة مفيدة لحالات DRS: 0/1 = إيقاف, 8 = تم اكتشافه وهو مؤهل, 10/12/14 = علىتظهر بعض القيم الوسيطة على أنها غير معروفة.

السائقين

يقوم بإرجاع معلومات الطيار حسب الجلسة مع أسماء التلفزيون والفريق والرموز. احصل على /v1/drivers.

  • اسم البث: اسم في الرسوم البيانية التلفزيونية.
  • الرقم الدولي: رمز البلد.
  • رقم السائق: ظهرية واحدة.
  • الاسم الأول، اسم العائلة، الاسم الكامل: أسماء الطيارين.
  • عنوان URL لصورة الرأس:صورة الوجه.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.
  • الاسم_المختصر: اختصار مكون من ثلاثة أحرف.
  • لون الفريق: لون الفريق السداسي.
  • اسم الفريق: اسم الفريق.

الفترات:

الفواصل الزمنية بين السيارات والفجوة مع المتصدر، يتم تحديثها كل 4 ثوانٍ تقريبًا فقط في السباق (يمكن إصدار البث المباشر بعد الجلسة). احصل على /v1/الفواصل.

  • تاريخ:الطابع الزمني.
  • رقم السائق: ظهري.
  • الفجوة بين القائد: ثوانٍ للزعيم، "+1 لفة" إذا كان متجاوزًا للدور أو لا شيء إذا كان زعيمًا.
  • الفاصلة: الوقت المستغرق للسيارة السابقة، "+1 لفة" إذا كان ذلك ممكنًا أو لا شيء إذا كانت السيارة متقدمة.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.

لفات

معلومات تفصيلية لكل لفة (القطاعات والسرعات، حفرة الخروج(فخ السرعة). احصل على /v1/laps.

  • تاريخ البدء:البداية التقريبية للعودة.
  • رقم السائق: ظهري.
  • مدة القطاع 1/2/3: مرات حسب القطاع.
  • i1_speed، i2_speed:السرعات في المتوسطات.
  • هل الحفرة خارج اللفة:صحيح إذا كانت هذه لفة الخروج من الحفرة.
  • مدة اللفة:الوقت الإجمالي.
  • رقم اللفة: رقم اللفة.
  • القطاعات_1/2/3: القطاعات الصغيرة (القيم 2048 = أصفر، 2049 = أخضر، 2051 = أرجواني، 2064 = حارة الصيانة؛ قيم أخرى ممكنة).
  • سرعة st:السرعة في الفخ.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.

المقاطع غير متوفرة في سباق وقد يكون هناك عدم تطابق في الألوان على شاشة التلفزيون لأسباب غير معروفة.

المدينة المنورة - بجوار المسجد النبوي

إحداثيات تقريبية للسيارة على المسار عند ~3,7 هرتز (لا يشمل الوضع الجانبي على المسار(التقدم فقط). يمكن نشر البث المباشر بعد الجلسة. احصل على /v1/location.

  • تاريخ:توقيت UTC.
  • رقم السائق: ظهري.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.
  • س ، ص ، ض:إحداثيات ديكارتية.

اجتماعات

قم بتجميع عطلة نهاية الأسبوع (GP أو اختبار) مع جلساتها. احصل على /v1/الاجتماعات.

  • مفتاح الدائرة، اسم الدائرة المختصر: الدائرة.
  • رمز البلد، مفتاح البلد، اسم البلد: دولة.
  • تاريخ البدء: يبدأ.
  • gmt_offset:فارق التوقيت مع توقيت جرينتش.
  • موقع:المدينة/الموقع.
  • مفتاح الاجتماع:معرف الاجتماع.
  • اسم الاجتماع، اسم مسؤول الاجتماع: الأسماء.
  • عام: سنة.

التجاوزات (بيتا)

التجاوز وتغييرات المواقع (بما في ذلك العقوبات على المسار وحفر الصيانة وبعد السباق). فقط في السباقات وقد تكون غير مكتملة. الحصول على /v1/يتجاوز.

  • تاريخ: فوري.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.
  • رقم السائق المتجاوز: تجاوز الظهر.
  • رقم سائق التجاوز: أمامي ظهري.
  • ان يرتفع المركز:الموقف بعد الانتهاء من التجاوز.

حفرة

مرور حارة الصيانة بإجمالي المدة من الدخول إلى الخروج. احصل على /v1/pit.

  • تاريخ, رقم السائق, رقم اللفة: سياق.
  • مفتاح الاجتماع، مفتاح الجلسة:المعرفات.
  • مدة الحفرة:ثواني في حارة الصيانة.

الموقع الحالي

مواقع السائقين طوال الجلسة، بما في ذلك التغييرات. احصل على /v1/position.

  • تاريخ, رقم السائق.
  • مفتاح الاجتماع، مفتاح الجلسة.
  • ان يرتفع المركز: 1 فصاعدا.

السيطرة على السباق

الأحداث الرسمية: الأعلام، DRS، سيارة الأمان، VSC, رسائل وفئات مختلفة. احصل على /v1/race_control.

  • الفئة: CarEvent، Drs، Flag، SafetyCar، إلخ.
  • تاريخ, رقم السائق, رقم اللفة.
  • علم:الأنواع (الأخضر، الأصفر، الأصفر المزدوج، المنقوش…).
  • الرسالة:وصف الحدث.
  • نطاق: المسار، السائق، القطاع…
  • القطاع: القطاع الصغير المعني (إن وجد).
  • مفتاح الاجتماع، مفتاح الجلسة.

الجلسات

قائمة وتفاصيل الجلسات (التدريب، التصفيات، السباق، السباق…). احصل على /v1/sessions.

  • مفتاح الدائرة، اسم الدائرة المختصر.
  • رمز البلد، مفتاح البلد، اسم البلد.
  • تاريخ البداية، تاريخ النهاية, gmt_offset, موقع.
  • مفتاح الاجتماع، مفتاح الجلسة.
  • اسم_الجلسة:التمرين 1، التصفيات، السباق…
  • نوع الجلسة:التدريب، التأهل، السباق…
  • عام.

نتيجة الجلسة (نسخة تجريبية)

التصنيف بعد كل جلسة: أفضل اللفات أو إجمالي وقت السباق. احصل على /v1/session_result.

  • dnf، dns، dsq: لا ينتهي، لا يبدأ، مستبعد.
  • رقم السائق, مفتاح الاجتماع, مفتاح الجلسة.
  • مدة الأقامةأفضل لفة (التدريب الحر/التصفيات) أو إجمالي الوقت (السباق). في التصفيات، يُصنف [Q1، Q2، Q3].
  • الفجوة بين القائد:الفرق مقابل القائد؛ في المؤهلات، المصفوفة [Q1، Q2، Q3].
  • عدد اللفات: عدد اللفات المكتملة.
  • ان يرتفع المركز:الموقف النهائي.
  لماذا لا يعمل Wallapop؟ إذا كان لا يسمح لي بشراء أو رفع المنتجات ما الحل؟

شبكة البداية (نسخة تجريبية)

شبكة البداية للسباق القادم. احصل على /v1/starting_grid.

  • رقم السائق, مفتاح الاجتماع, مفتاح الجلسة.
  • مدة اللفة:وقت اللفة التأهيلية.
  • ان يرتفع المركز:وضعها على الشواية.

فترات

فترات القيادة المستمرة حسب مركب الإطارات وعمرها. احصل على /v1/stints.

  • مركب:ناعم، متوسط، صلب…
  • رقم السائق, مفتاح الاجتماع, مفتاح الجلسة.
  • بدء اللفة، نهاية اللفة: مجموعة من المنعطفات.
  • رقم المهمة: الترتيب الزمني للمهمة.
  • عمر الإطار عند البداية: عمر الإطار عند البداية (باللفات).

راديو الفريق

اختيار الرسائل اللاسلكية بين السائقين والفرق (ليس 100% من الاتصالات). احصل على /v1/team_radio.

  • تاريخ, رقم السائق.
  • مفتاح الاجتماع, مفتاح الجلسة.
  • رابط التسجيل:رابط للصوت.

الطقس

دائرة الطقس مع التحديث كل دقيقة. احصل على /v1/weather.

  • درجة حرارة الهواء (°م) درجة حرارة المسار (°م).
  • رطوبة (%), الضغط (مليبار)، هطول الأمطار.
  • اتجاه الرياح (0–359 درجة)، سرعة الرياح (آنسة).
  • تاريخ, مفتاح الاجتماع, مفتاح الجلسة.

المرشحات والوقت والتنسيقات: احصل على أقصى استفادة من استعلاماتك

أحد مزايا OpenF1 هو التصفية حسب المعلمات في عنوان URL نفسه، بما في ذلك عوامل التشغيل العلائقية. يسمح هذا بإجراء استعلامات تعبيرية، مثل التصفية حسب مدة الدورة، أو اختيار نطاق تاريخ، أو التحديد حسب رقم السباق والجلسة.

بالإضافة إلى التصفية حسب الحقول، يمكنك استخدام نطاقات زمنية مع date_start وdate_end (يدعم تنسيقات متعددة متوافقة مع dateutil.parser(مثل "2021-09-10"، "2021-09-10T14:30:20+00:00"، "10 سبتمبر 2021"، وما إلى ذلك).

إذا كنت تفضل جداول البيانات، أضف csv=صحيح للاستعلام والتنزيل بصيغة CSV. مثالي لبرنامج Excel أو استخراج وتحويل وتحميل سريع قبل تحميل البيانات إلى المستودع التحليلي.

أمثلة (مُعاد صياغتها من المادة المصدرية للرجوع إليها): توقف ساينز لمدة 120 ثانية على الأقل في جلسة محددة: /v1/laps?session_key=9222&driver_number=55&is_pit_out_lap=true&lap_duration>=120. جميع جلسات سبتمبر 2023: /v1/sessions?date_start>=2023-09-01&date_end<=2023-09-30وإذا كنت تريد ذلك في CSV: /v1/sessions?year=2023&csv=true.

الوصول في الوقت الفعلي: مصادقة OAuth2 والرؤوس

بالنسبة للبيانات المباشرة، تحتاج إلى حساب معتمد وتدفق OAuth2 بسيطة: أرسل اسم المستخدم وكلمة المرور إلى /token، سوف تتلقى رمز وصول مع انتهاء صلاحية لمدة ساعة واحدة وتضمينها كـ حامل في رأس التفويض لطلباتك.

التفاصيل التشغيلية التي يجب أن تعرفها: غالبًا ما يتم تحديث واجهة برمجة التطبيقات (API) بـ تأخير حوالي 3 ثواني فيما يتعلق بالحي (قد يختلف حسب بدايات باردة)، واستعلامات REST لها مهلة زمنية مدتها 10 ثوانٍإذا استغرق الاستعلام وقتًا طويلاً، فقم بتقسيمه إلى أجزاء ودمج النتائج محليًا.

تذكر أن الرمز تنتهي صلاحيتها خلال ساعة واحدةيجب أن يُجدّد تطبيقك الرمز بشفافية. للحصول على الدعم العام والملاحظات، يُرجى استخدام القناة المُوصى بها. مناقشات جيثبيتم الإبلاغ عن الأخطاء عن طريق إنشاء مشكلات في المستودع.

البث الفعال مع MQTT و WebSockets

بالنسبة للتطبيقات الحساسة للوقت، فإن التوصية هي إعطاء الأولوية MQTT أو WebSockets (MQTT عبر WSS) لأنهم يرسلون البيانات بمجرد توفرها، مما يتجنب الاستطلاع المستمر.

الاتصالات النموذجية: MQTT TLS قيد التشغيل mqtt.openf1.org:8883 وتأمين WebSockets في wss://mqtt.openf1.org:8084/mqtt. يستخدم المصادقة رمز الوصول ككلمة مروريمكن أن يكون اسم المستخدم أي سلسلة غير فارغة (أو بريدك الإلكتروني).

الكثير تعكس الموضوعات نقاط نهاية REST (على سبيل المثال: v1/sessions, v1/laps, v1/location...)، مع خيار استخدام أحرف بديلة إذا كان عميلك يدعمها. الحمولة هي JSON وتضيف حقولاً مفيدة: _ID (عدد صحيح متزايد للفرز حسب الوقت) و _مفتاح (معرف المستند للإصدارات المتعاقبة من نفس الكائن، على سبيل المثال الجولات التي يتم تحديثها بالشرائح).

مثال على رسالة الموقع (تنسيق توضيحي): يتضمن meeting_key وsession_key وdriver_number، بالإضافة إلى الإحداثيات والحقول الوصفية المتدفقة.

{
  "meeting_key": 1257,
  "session_key": 10007,
  "driver_number": 31,
  "date": "2025-04-11T11:21:16.603025+00:00",
  "x": 0,
  "y": 0,
  "z": 0,
  "_key": "1744370476603_31",
  "_id": 1747235800206
}

السلامة والممارسات الجيدة

الأولوية هي الحماية بيانات الاعتماد والرموزيجب أن يكون تبادل اسم المستخدم/كلمة المرور إلى الرمز موجودًا في الواجهة الخلفية لديك: لا تقم أبدًا بتضمين بيانات اعتماد مباشرة في كود العميل القابل للتفتيش.

  أنشئ خادم HTTP خفيف الوزن في PowerShell للاختبار المحلي

بالنسبة لتطبيقات الويب، قم بإرسال الرمز بواسطة HTTPS وتجنب تعريضها في التخزين المحلي إذا كان هناك خطر XSS؛ قم بتقييم ملفات تعريف الارتباط HttpOnly + آمن عند الاقتضاء. في البنيات التي تدعم البث من المتصفح، فكّر فيما إذا كان من الآمن الاحتفاظ بـ اتصال MQTT/WebSocket في الواجهة الخلفية لديك وتوجيه الأحداث إلى العملاء.

في بيئات الواجهة الخلفية، يقوم بتخزين الرمز بشكل آمن ويتعامل معه تجديد مُسبقًا. لا تنشر الرموز في مستودعات عامة أو تلصقها في نماذج أكواد مشتركة.

النظام البيئي والمساهمات وخريطة الطريق

يهدف OpenF1 إلى إضفاء الطابع الديمقراطي على بيانات الفورمولا 1 جعلها متاحة. ندعوك لاقتراح أفكار في مناقشات جيثب والتعاون من خلال طلبات السحب. الخدمة مجانية الاستخدام (لا تتطلب مصادقة أو قيودًا على معدل البيانات التاريخية)، ولكنها تتطلب استخدام مسؤول وإذا وجدت أنها مفيدة، فادعم استدامتها بالتبرعات.

تشير خريطة الطريق إلى دمج التصنيفات والتقويمات، أضف مواسم 2018–2022، نصوص من قبل IA للحصول على معلومات لاسلكية، وأوقات توقف أكثر دقة، وقياسات التجاوز والإطارات. هناك أيضًا إخلاء مسؤولية: لا يضمنون التوافر المستمر أو الدقة مطلقة، وليست مسؤولة عن أي خسائر ناجمة عن الاستخدام.

الائتمان ل فاست اف 1 ومؤلفها لإلهامه أجزاء من النظام (بما في ذلك مسجل SignalR)، والتذكير القانوني: OpenF1 ليست تابعة لشركات F1؛ العلامات التجارية والحقوق من شركة Formula One Licensing BV

المقارنة والبدائل: Live Pulse والخدمات الأخرى

يوجد في النظام البيئي خدمات مثل "F1 Live Pulse" (عبر منصات من نوع RapidAPI) تهدف إلى تقديم بيانات في الوقت الحقيقي، رسائل رسمية، تشغيل الإطاراتراديو الفريق، والطقس، والتصنيفات مع التوقعات. غالبًا ما ينظمون نقاط النهاية لـ السائقين، الأوقات، نقاط التوقف، الراديو، ومراقبة السباق، والطقس، والترتيب، مع التركيز على تشغيل التطبيقات ولوحات المعلومات الغنية.

تتوفر أيضًا واجهات برمجة تطبيقات تجارية مثل "api-formula-1.p.rapidapi.com". وقد أوضح دليل عملي باللغة الإسبانية كيفية استخدام التصنيفات مع مدعوم ومن ثم نقلهم إلى جلب بسبب مشكلة في CORS، تمت إضافة رأسي "x-rapidapi-key" و"x-rapidapi-host". هذا تذكير جيد بأنه عند العمل مع واجهات برمجة التطبيقات من المتصفح، CORS والمفاتيح تتطلب عناية؛ غالبًا ما يكون من الأفضل استخدام برنامج خلفي يقوم بتوكيل الطلب.

إذا اخترت OpenF1، فستتمتع بميزة التاريخ المفتوح والمرشحات المعبرة، ملف CSV الأصلي ووضع مباشر مع OAuth2، بالإضافة إلى البث عبر MQTT/WebSockets. بناءً على حالتك، يمكنك دمجه مع مصادر أخرى، مع مراعاة دائمًا التراخيص والشروط لكل خدمة.

البدء محليًا باستخدام Python وMongoDB

توصي بعض الموارد بإعداد بيئة محلية لمعالجة البيانات وحفظها. النهج النموذجي هو تثبيت خادم مجتمع MongoDB الإصدار 7تأكد من أن لديك Python ≥ 3.10 y نقطة ≥ 23، وقم بتثبيت حزمة OpenF1 Python.

بعد التثبيت، قم بتكوين متغير البيئة سلسلة اتصال مونغو بالإشارة إلى مثيلك المحلي/البعيد، وتشغيل المشروع لاستهلاك البيانات وتخزينها. يُسهّل هذا النمط التحليل القابل للتكرار لوحات القيادة الخاصة متصل بقاعدة البيانات الخاصة بك.