تطبيق خفيف الوزن لبروتوكول ATPROTO للاستمتاع مع Bluesky
بعد النظر في المكتبات المتاحة بالفعل للتواصل مع Atproto ، قررت أن أذهب إلى طريقتي الخاصة. لقد امتنعت بطريقة ما عن استخدام المكتبات التي تتضمن عشرات المكتبات الأخرى في ملحنها. json بينما يمكن تغطية وظيفة الاتصال الحقيقية عن طريق عدد مكونات الطرف الثالث.
حاليا (أود أن أسميها قبل الألفا) أنا أدرج مكتبة طرف ثالثة فقط ، وهي
ربما ستصبح أكثر في المستقبل.
لجعل كل شيء أقل من الفوضى ، قمت بإعادة تسمية جميع الوظائف تقريبًا ..... يمكنك العثور على قائمة بالوظائف التي قمت بتطبيقها هنا:
الوظائف المنفذة المصنفة بواسطة endpoint.md
الوظائف المنفذة مرتبة باسم الدالة.
يمكنك تثبيت المكتبة مع الملحن من خلال التنفيذ
composer require schnoog/php_atproto
سيؤدي ذلك إلى تثبيت المكتبة في دليل البائع المعتاد. الآن انسخ الملف /vendor/schnoog/php_atproto/src/config.dist.php php_atproto/src/config.dist.php إلى دليل التثبيت وإعادة تسميته إلى config.php
أو استخدم الأمر التالي من داخل دليل التثبيت الخاص بك لنسخ الملف تلقائيًا (إذا كان هناك alrea ، فسيتم تكوين اسم ملف config.php في دليل التثبيت ، فلن يتم الكتابة فوقه.
php -r 'if(!file_exists(__DIR__ . "/config.php")) copy (__DIR__ . "/vendor/schnoog/php_atproto/src/config.dist.php", __DIR__ . "/config.php");'
قم بتغيير محتوى config.php وأدخل بيانات الاعتماد الخاصة بك
هذه هي الطريقة للذهاب إذا لم تكن قد قمت بتثبيت الملحن على الإطلاق.
لقد قمت بإنشاء مستودع ثانٍ يتضمن جميع الملفات المطلوبة لتشغيل هذا الشيء.
قم بتنزيل الإصدار المضغوط من هنا: إصدار PHP_ATPROTO المعبأ
ما عليك سوى فك ضغطه ، وقم بتعيين بيانات الاعتماد الخاصة بك في config.php وأنت مستعد للذهاب. نعم ، الأمر سهل حقًا
هذا يعني أن لديك نسخة من المستودع بأكمله إما بواسطة
أو
بعد أن يكون لديك الملفات الموجودة في الدليل المطلوب ، انسخ ملف config.dist.php في دليل التثبيت الخاص بك وقم بإعادة تسميته إلى config.php
لا تنس تثبيت التبعية عن طريق تنفيذ composer install
قم بتغيير محتوى config.php وأدخل بيانات الاعتماد الخاصة بك
لدي (حاليا) فقط عدد قليل:
أنا لست أكبر معجبي OOP. ليس كل شيء في عالمي الرقمي يجب أن يكون فصلًا. لذلك سأبقي الواجهة وظيفة بحتة (Evenso والتي من السهل إنشاء منشور أسهل في الفصل)
حسنًا ، دعنا نتحقق من ما هو متاح
هذا المثال الصغير يدقق فقط ضد الخادم ويخزن الرمز المميز محليًا. إذا كان رمزًا محليًا مخزنًا متاحًا وتم إجراء فحص الصلاحية الأخير أكثر من المحددة في $config['atproto']['storedsession_validity']
وهنا يذكر بنفسي: لصق if (!atp_session_get())return false; في بداية الواجهة (post ، احصل على الجدول الزمني ...) وظائف.
<?php
require_once(__DIR__ . "/src/includer.php");
if (!atp_session_get()){
echo "UNABLE TO ESTABLISH SESSION" . PHP_EOL;
print_r($config['error']);
}else{
echo "Session estalished and checked" . PHP_EOL;
}
نعم ، هذا الشيء يمكن أن ينشر في الجدول الزمني الخاص. كل ما عليك القيام به (بعد تضمين includer.php) هو استدعاء الوظيفة.
لكن هذا يأتي مع قيود (مثل كل شيء على الأرض):
إليك القليل عن المعلمات للدالة الرئيسية ATP_CREATE_POST
$text = "This is the text to post, n containing mentioning @develobot.bsky.social and a link https://github.com/schnoog/php_atproto";
$lang = ['de','en'];
$add_link_facets = true;
$add_mentions_facets = true;
$images = [ __DIR__ . "/pic01.jpg" , __DIR__ . "/pic02.jpg"];
$images_alts = [ '', 'Alt text for second image'];
كما ذكرنا من قبل ، يمكنك إما الحصول على صور أو بطاقة ويب. إذا حددت كلاهما (وقمت بتوفير الوظيفة معهم ؛)) ، فسيتم عرض بطاقة الويب فقط
$website_uri = "https://github.com/schnoog/php_atproto";
$website_title = "My user defined title";
$website_description = "My user defined description";
$website_image = __DIR__ . "/website_image.png";
حسنًا ، دعونا ننظر كيف يتم إجراء بعض المكالمات
<?php
require_once(__DIR__ . "/src/includer.php");
/*
Let's define some variables
*/
$text = "This is the text to post, n containing mentioning @develobot.bsky.social and a link https://github.com/schnoog/php_atproto";
$lang = ['de','en'];
$add_link_facets = true;
$add_mentions_facets = true;
$images = [ __DIR__ . "/pic01.jpg" , __DIR__ . "/pic02.jpg"];
$images_alts = [ '', 'Alt text for second image'];
$website_uri = "https://github.com/schnoog/php_atproto";
$website_title = "My user defined title";
$website_description = "My user defined description";
$website_image = __DIR__ . "/website_image.png";
//The most simple text post - parsing of mentions and links is ENABLED by default
$answer = atp_create_post($text);
//Now a post, just like above, but this time with the 2 defined images attached, and the $lang keys
$answer = atp_create_post($text,$lang,true,true,$images,$images_alts);
//And now a post which includes a webcard, for which we only provide the URL
$answer = atp_create_post($text,$lang,true,true,[],[],$website_uri);
//Why not a post with a full user defined webcard? Own title, description and image
$answer = atp_create_post($text,null,true,true,[],[],$website_uri,$website_title,$website_description,$website_image);
نعم ، من السهل جدًا قراءة الجدول الزمني الخاص (أو التغذية أو يطلق عليه). TBH ، أسهل شيء متاح
<?php
require_once(__DIR__ . "/src/includer.php");
//Get 27 entries of the own timeline and print it by DebugOut
$timeline = atp_get_own_timeline(27);
DebugOut($timeline);
هذه الوظيفة محدودة بطريقة ما. أنا غير قادر حاليًا على تلقي أي نتيجة صالحة من app.bsky.feed.searchPosts . لذا بدلاً من ذلك ، أقرأ من https://search.bsky.social/search/posts
ليس لطيفًا ، لكنه يعمل
<?php
require_once(__DIR__ . "/src/includer.php");
//Search for posts containing "Arduino" and print the result
$answer = atp_search_posts_by_term("Arduino");
DebugOut($answer);
سأقوم بإنشاء قائمة مع الوظائف ونقاط النهاية التي تم تنفيذها وسأحاول الحفاظ على تحديثها.
elevered_sorted_by_endpoint.md
elevered_sorted_by_funtions.md