سوف أخبرك بكيفية قيامي بتلقي وعرض المعلومات من
KudaGo API العامة على المرآة. بالطبع ، لا يتعلق الأمر بالمرآة البسيطة ، بل بالمرآة "الذكية".
ما هي المرآة الذكية؟
على الأرجح ، سمع الكثيرون عن منصة
MagicMirror² المعيارية ، والتي تسمح لك بنشر تطبيق على Raspberry Pi يمكنه تحويل مرآة لقاعة المدخل أو الحمام إلى مساعدك الشخصي. يمكنك تنفيذ
هذا أو
ذاك باستخدام ما يسمى المرآة "ثنائية الاتجاه" والشاشة والأذرع المستقيمة والحواسيب الصغيرة المذكورة أعلاه.
السحر في MagicMirror هو فقط في الاسم. إذا فهمت بشكل صحيح ، فقد تم تطوير كل هذا على
Electron ، مما يعني أن Node.js. تشارك في هذه المسألة. يُنشئ "التطبيق" صفحة html يتم فتحها في نافذة المتصفح عند إطلاقها ، ويتم عرض ما يسمى بالوحدات النمطية بالفعل ، سواء تم تثبيتها مسبقًا (الساعة ، التقويم ، الطقس الحالي ، توقعات الطقس ، موجز الأخبار) ، والتي تم
تطويرها بواسطة المجتمع . وهناك ما يكفي من الاهتمام (سواء كان مفيدًا أو
عنيدًا على حد سواء) ، على سبيل المثال ، فيما يلي عدد قليل من أكثر من مائة وحدة:
مفيد
غير عادي
قبل التاريخ
حول كيفية جمع المرآة الخاصة بي ، لن أرسم بالتفصيل. إذا أصبح شخص ما مهتمًا ،
فيمكنك القراءة هنا . إذا كنت تريد إنشاء البحث الخاص بك ، فسيؤدي البحث البسيط في Google إلى عرض العشرات من الأمثلة \ الأدلة \ الأدلة. أريد أن أوضح كيفية صنع وحدة لمثل هذه المرآة.
أنا معجب كبير بحضور مختلف الحفلات والمناسبات في سان بطرسبرغ. ولكن في بعض الأحيان يحدث ذلك (حتى مع مراعاة وفرة الإعلان عن المحتوى ، والبريد المزعج والملصقات) أتعلم بعض الأحداث قبل يوم أو يومين تقريبًا. لذلك ، كنت أبحث دائمًا عن طريقة لتصفية تدفق المعلومات المتعلقة بها على النحو الأمثل. لم تتوقف التطبيقات على الهاتف الذكي مع وظائف مماثلة لفترة طويلة (بدقة أكبر ، لقد نسيت عنها). تطلبت جميع الملصقات الوقت والمتابعة المستمرة للسعي "اختر 10 مرشحات ، واحزر أي منها مناسب". تتحول قنوات التواصل الاجتماعي عمومًا إلى إعلانات غير مرغوب فيها. ثم جاءت الفكرة بفكرة تطبيق "محلل" يقوم باختيار المعلومات بشكل دوري وفقًا لمعاييره الخاصة ويعرضها في مكان ما.
تطوير الوحدة الخاصة بك
إذا أراد شخص ما على الفور رؤية النتيجة ، أو تثبيت الوحدة النمطية على "نسخة متطابقة" ، فهنا هو
الرابط إلى المستودع . هناك أيضا تعليمات التثبيت.
كمصدر للمعلومات ، تبين أن خدمة
kudago هي الأكثر ملائمة. لا تسجيل المطلوبة. طرق سان. بيانات موجزة في الجواب. إنها ليست تغطية غريبة ، فهي لا تشمل فقط "كبح المدينة" و "غير المطاط" ، ولكن أيضًا تسع مدن روسية رئيسية.
يجب أن يتم تخزين الوحدة النمطية المتقدمة في
مجلد الوحدات النمطية / modulename . لإنشاء وحدة نمطية بسيطة (مثل لي) نحتاج إلى إنشاء ملفين في هذا المجلد:
- modulename / modulename.js هو البرنامج النصي للوحدة الرئيسية.
- modulename / node_helper.js هو "المساعد الاختياري" الذي سيتم تحميله بواسطة البرنامج النصي. يمكن للمساعد والبرنامج النصي التواصل مع بعضهم البعض باستخدام نظام مقبس متكامل.
بعد أن تعاملت مع
دليل من مطور MagicMirror ، بالإضافة إلى النظر في حلول الآخرين ، قمت بتحميل برنامج نصي للحصول على إدخالات من واجهة برمجة تطبيقات kudago باستخدام XMLHttpRequest. واجهت مشكلة الاستعلامات عبر المجال. أنا لست خبير جافا سكريبت على الإطلاق (ولا حتى مطور). كل ما فهمته هو إرسال طلب "تنفيذ برنامج نصي في متصفح" والحصول على استجابة من kudago ، لم أستطع النجاح. إليكم ما أوضح
لي Learn.javascriptتخضع الطلبات عبر النطاق لرقابة أمنية خاصة ، والغرض منها هو منع المتسللين الشر من غزو الإنترنت.
على محمل الجد. قام مطورو المعيار بتوفير جميع الحواجز بحيث لا يستطيع "المتسلل الشرير" ، باستخدام المعيار الجديد ، القيام بشيء مختلف جوهريًا عما كان يمكن أن يفعله من قبل ، وبالتالي ، "يكسر" بعض الخادم الذي يعمل وفقًا للمعايير القديمة وعدم توقع أي شيء جديد في الأساس.
حسنا ، ليس حقا ما أردت. لم تكن لدي رغبة في فهم مشاكل جافا سكريبت. بعد كل شيء ، في متناول اليد كان بيثون مألوفة ويمكن التنبؤ بها. سأحصل فقط على معلومات من مكتبة
الطلبات ، اكتب النتيجة في json. يبقى فقط حل مسألة كيفية تنفيذ شفرة Python من js.
اتضح أن node_helper.js مفيد لي! عند بدء تشغيل الوحدة النمطية لدينا ، يمكنك استخدام قدرات
python-shell . ما عليك سوى تحديد المسار إلى مترجم Python ، والمسار إلى البرنامج النصي ، والحجج وقيمها. في هذا النموذج ، تفضل kudago بإرجاع إجابة ناجحة لي.
بيثون رمز الاتصال النصيkudagoGetData: function () {
بالإضافة إلى ذلك ، فقط node_helper.js قادر على قراءة المعلومات من ملف json (افتراضيًا ، سيكون الملف على المسار
kudago / events.json ) مع البيانات التي تم تنزيلها من kudago. ننفذ فيه نفس القراءة من الملف.
رمز لقراءة المعلومات من ملف كما كتبت بالفعل ، في MagicMirror ، تتواصل جميع الوحدات من خلال نظام المقبس ، لذلك من أجل تشغيل برنامج Python النصي عند بدء التشغيل ، أضف الكود المناسب إلى node_helper.js
رمز لبدء الوحدة النمطية عند بدء التشغيل socketNotificationReceived: function (notification, payload) { if (notification === "START") { this.config = payload; this.kudagoGetData(); setInterval(() => { this.kudagoGetData(); }, this.config.updateInterval); } }
جميع المعلمات التي يتم الحصول عليها من
this.config هي إما المتغيرات المحددة مسبقًا في ملف الوحدة النمطية الرئيسي ، أو تلك المحددة في config.js - ملف التكوين العام لجميع وحدات MagicMirror.
مثال التكوين للوحدة التي تم إنشاؤها { module: 'MMM-KudaGo', disabled: false, position: 'bottom_bar', config: { location: "spb", categories: "concert", tags: " --,", days: 7 } }
حسنًا ، في الملف الرئيسي
لوحدة MMM-KudaGo.js الخاصة بنا ، توجد معلمات افتراضية ووظائف لمعالجة بيانات الأحداث (مأخوذة من ملف json) ، وعلامات لرسم لوحة (من المحتمل أن ينزف منها أولئك الذين يعرفون ، ولكنني في الخزان ، الشيء الرئيسي بالنسبة لي هو عملت). نظرًا لحقيقة أنني خرجت من العمل مع API في ملفات python ، لم يتم تحميل ملفات .js برمز (على عكس معظم الوحدات الأخرى) ، أو متداخلة (أو ما يطلق عليها هنا؟) الوظائف والحلقات والشعيرية الأخرى.
يؤدي
اتضح أنه تم تنفيذ بحث عن فئة أو عدة فئات من الأحداث ، والبحث عن طريق العلامات ، والبحث عن فاصل زمني محدد من الأيام ، مع التحديث على فترات زمنية محددة (للحصول على قائمة أكثر تفصيلاً من الفئات والعلامات ، انظر
الملف التمهيدي ). وعرضها كلها على الشاشة ، مع الإشارة إلى المكان والاسم والتاريخ والسعر ، في شكل قابل للقراءة ، ودون إضاعة الوقت في عملية بحث مستقلة.
بالطبع ، يجب أن تشاهد بعناية عدة مرات ما إرجاع التطبيق الصغير هناك لفهم العلامات التي تحتاج إلى وضعه حتى لا تظهر الحفلات الموسيقية أو العروض المسرحية ، ولكن على سبيل المثال دورات اليوغا أو المهرجانات المجانية في مدينتك. ولكن شخصيا ، احتياجاتي راضية تماما!
آمل أن تتوصل أيضًا إلى إنشاء وحدة مفيدة للمجتمع ، والتي تشاركها مع الآخرين في صفحة خاصة من المشروع. بالمناسبة ، إذا كانت لديك أفكار جيدة ، أو تحتاج إلى شيء ما ، فاكتب في التعليقات. ربما دفع شخص ما إلى الإبداعية!