تقنية

تتبع حالات فيروس كورونا (COVID-19) في الهند باستخدام جداول بيانات Google


يحتوي موقع حكومة الهند على لوحة معلومات مباشرة توفر، في الوقت الفعلي تقريبًا، عدد حالات فيروس كورونا (COVID-19) في مختلف ولايات الهند. هذا هو أفضل مورد للحصول على تحديثات حول حالات فيروس كورونا (COVID-19) النشطة في الهند.

تعقب COVID-19 للهند

يوفر الموقع الرسمي البيانات الحالية، ولكن إذا كنت تريد التحقق من كيفية زيادة عدد الحالات المؤكدة في الهند بمرور الوقت، فلا توجد بيانات تاريخية متاحة. وهذا أحد الأسباب التي دفعتني إلى تصميم أداة تعقب فيروس كورونا (COVID-19) باستخدام جداول بيانات Google.

يقوم المتتبع بجمع البيانات من الموقع الرسمي كل بضع دقائق ويستخدم Sparklines لمساعدتك في تصور كيفية انتشار فيروس كورونا في الهند مع مرور الوقت. تنشر الحكومة التقارير بنشاط منذ 10 مارس ويمكن أيضًا الوصول إلى جميع البيانات من خلال ورقة Google.

واجهة برمجة تطبيقات كوفيد-19 JSON

إذا كنت مطورًا، فقد قمت أيضًا بنشر البيانات كواجهة برمجة تطبيقات JSON والتي ستزودك بأحدث البيانات الحكومية لحالات فيروس كورونا (COVID-19) كما هو متاح على موقع وزارة الصحة ورعاية الأسرة في الهند.

كيف يعمل جهاز تعقب كوفيد-19

تمت كتابة أداة تعقب فيروس كورونا باستخدام برنامج Google Apps Script، وهي تستخدم مشغلات تعتمد على الوقت لاستخراج الأرقام من الملف mohfw.gov.in الموقع كل بضع دقائق.

/**
 * Scrape the homepage of mohfw.gov.in (Ministry of Health, India)
 * website for latest numbers on Coronavirus positive cases in India
 */
const scrapeMOHWebsite = () => {
  const url = "https://www.mohfw.gov.in/";
  const response = UrlFetchApp.fetch(url);
  const content = response.getContentText();
  return content.replace(/[\r\n]/g, "");
};

لا يدعم Google Apps Script موزعي HTML مثل Cheerio لذا كان علينا إنشاء واحد سريعًا من البداية باستخدام regex. فهو يلتقط محتوى HTML للصفحة، ويبحث عن ملف table علامة ثم يستخرج البيانات من الخلايا الفردية للجدول.

إذا قاموا بتغيير تخطيط موقع الويب، فمن المحتمل أن يتعطل هذا المحلل اللغوي.

/**
 * Parse the webpage content and extract numbers from the HTML
 * table that contains statewise data on Covid-19 Cases in India
 */
const getCurrentCovid19Cases = (json = true) => {
  const states = {};
  const html = scrapeMOHWebsite();
  const [table] = html.match(/<div id="cases".+?>(.+)<\/div>/);
  const rows = table.match(/<tr>(.+?)<\/tr>/g);
  rows.forEach(row => {
    const cells = row.match(/<td.+?>(.+?)<\/td>/g).map(cell => cell.replace(/<.+?>/g, ""));
    const [, stateName, indianNationals, foreignNationals] = cells;
    if (/[a-z\s]/i.test(stateName)) {
      states[stateName] = Number(indianNationals) + Number(foreignNationals);
    }
  });
  return json ? states : JSON.stringify(states);
};

بمجرد حصولنا على البيانات بتنسيق JSON، يمكننا الكتابة بسهولة إلى جدول بيانات Google باستخدام Apps Script. يضيف البرنامج النصي عمودًا جديدًا يوميًا مع الاحتفاظ بالبيانات القديمة للمقارنة.

/**
 * Write the parsed data into a new column in Google Sheet
 * All the historic data is also preserved in the sheet.
 */
const writeNewCovid19CasesToSheets = covid19Cases => {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dashboard");
  const states = sheet
    .getRange(3, 1, sheet.getLastRow() - 2, 1)
    .getValues()
    .map(([state]) => [covid19Cases[state] || 0]);
  sheet
    .getRange(2, sheet.getLastColumn() + 1, states.length + 1, 1)
    .setValues([[new Date()], ...states.map(count => [count])]);
};

يوفر متتبع فيروس كورونا (COVID-19) في جداول بيانات Google أيضًا واجهة برمجة تطبيقات JSON التي يمكنك استخدامها لاستيراد البيانات مباشرة في تطبيقاتك ومواقع الويب الخاصة بك.

لنشر JSON API، قمنا بنشر البرنامج النصي كتطبيق ويب مع ملحق doGet وظيفة رد الاتصال. ال ContentService تقوم الخدمة بإرجاع مخرجات JSON الأولية عندما يستدعي تطبيق خارجي عنوان URL لبرنامج Google النصي.

const doGet = () => {
  const key = "Covid19India";
  const cache = CacheService.getScriptCache();
  let data = cache.get(key);
  if (data === null) {
    data = getCurrentCovid19Cases(false);
    cache.put(key, data, 21600);
  }
  return ContentService.createTextOutput(data).setMimeType(ContentService.MimeType.JSON);
};

جميع الأكواد مفتوحة المصدر ويمكنك استخدامها مجانًا في أي مشروع.



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى