أنا أعمل على سحب البيانات من Discourse باستخدام PHP وواجهة برمجة تطبيقات Data Explorer. إليك الهيكل الأساسي لشفرة PHP الخاصة بي كنقطة انطلاق للآخرين.
شفرة PHP
<?php
// تعيين مفتاح واجهة برمجة التطبيقات
$api_key = 'مفتاحك هنا';
//
// 1. يجب تعيين $url إلى عنوان URL لمنتدى Discourse الخاص بك
// 2. احصل على رقم الاستعلام الذي تريد تشغيله. قم بتحديث عنوان URL لهذا الاستعلام
// أي، الاستعلام رقم 5 => .../queries/5/run
// أي، الاستعلام رقم 47 => .../queries/47/run
$url = 'https://discourse.com/admin/plugins/explorer/queries/7/run';
//
// قم بتحديث معلماتك لتمريرها إلى الاستعلام.
// مثال لمعلمة واحدة - مشفرة بشكل ثابت
// $data = 'params={"user":"fred_smith"}';
// مثال لمعلمة واحدة - تمرير متغير
// $data = 'params={"user":"'.$user.'"}';
// مثال لمعلمتين أو أكثر - تمرير متغير
$data = 'params={"user":"'.$user.'","term":"'.$term.'"}';
//
// أوامر Curl
//
$headers = array("Content-Type: multipart/form-data;", "Api-Key: $api_key", "Api-Username: system",);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
$result = curl_exec( $ch );
if ( curl_errno( $ch ) !== 0 ) {
// معالجة الخطأ، استدعاء curl_close( $ch ) والعودة.
}
curl_close( $ch );
//
// تحويل نتيجة curl إلى مصفوفة php للعمل معها برمجياً
$result_array = json_decode( $result,true);
print($result_array);
?>
استعلام مستكشف البيانات
في مثال الشفرة الذي يستخدم متغيرين تم تمريرهما، بدا رمز مستكشف البيانات الخاص بي كالتالي:
--[params]
-- string :term
-- string :user
SELECT users.username, posts.id, uploads.url, topics.title
FROM upload_references
JOIN uploads ON uploads.id = upload_references.upload_id
JOIN posts ON posts.id = upload_references.target_id
JOIN topics ON topics.id = posts.topic_id
JOIN users ON posts.user_id = users.id
WHERE (posts.cooked like '%' || :term || '%'
OR topics.title like '%' || :term || '%')
AND users.username_lower like '%' || :user || '%'
AND topics.archetype = 'regular'
ORDER BY uploads.created_at DESC
limit 10
آمل أن يساعد هذا شخصًا ما في بدء مشروع.