การใช้งานน้ำหนักเบาของโปรโตคอล ATPROTO เพื่อให้สนุกกับ Bluesky
หลังจากดูห้องสมุดที่มีอยู่แล้วเพื่อสื่อสารกับ ATPROTO ฉันตัดสินใจไปตามทางของตัวเอง ฉันงดการใช้ไลบรารีซึ่งรวมถึงห้องสมุดอื่น ๆ โหลในนักแต่งเพลงของพวกเขา json ในขณะที่ฟังก์ชั่นการสื่อสารที่แท้จริงสามารถครอบคลุมโดยส่วนประกอบของบุคคลที่สามน้อยลง
ปัจจุบัน (ฉันจะเรียกมันว่า pre-alpha) ฉันรวมห้องสมุดบุคคลที่สามเพียงหนึ่งเดียวคือ
บางทีมันอาจจะกลายเป็นมากขึ้นในอนาคต
เพื่อให้ทุกอย่างยุ่งเหยิงฉันเปลี่ยนชื่อเกือบทั้งหมด ..... คุณสามารถค้นหารายการฟังก์ชั่นที่ฉันใช้ที่นี่:
ฟังก์ชั่นที่ใช้งานเรียงลำดับตามจุดสิ้นสุด
ฟังก์ชั่นที่ใช้งานเรียงลำดับตามชื่อของฟังก์ชัน MD
คุณสามารถติดตั้งไลบรารีด้วยนักแต่งเพลงได้โดยดำเนินการ
composer require schnoog/php_atproto
สิ่งนี้จะติดตั้งไลบรารีในไดเรกทอรีผู้ขายปกติ ตอนนี้คัดลอกไฟล์ /vendor/schnoog/php_atproto/src/config.dist.php ไปยังไดเรกทอรีการติดตั้งของคุณและเปลี่ยนชื่อเป็น config.php
หรือใช้คำสั่งต่อไปนี้จากภายในไดเรกทอรีการติดตั้งของคุณเพื่อคัดลอกไฟล์โดยอัตโนมัติ (หากมี Alreay ชื่อไฟล์ 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 และป้อนข้อมูลรับรองของคุณ
นี่คือวิธีที่จะไปถ้าคุณไม่ได้ติดตั้งนักแต่งเพลงเลย
ฉันสร้างที่เก็บข้อมูลที่สองซึ่งรวมถึงไฟล์ทั้งหมดที่จำเป็นในการเรียกใช้สิ่งนี้
ดาวน์โหลดเวอร์ชันซิปจากที่นี่: PACKED PHP_ATPROTO เวอร์ชัน
เพียงแค่เปิดเครื่องซิปตั้งค่าข้อมูลรับรองของคุณใน config.php และคุณพร้อมที่จะไป ใช่มันง่ายจริงๆ
ซึ่งหมายความว่าคุณมีสำเนาของที่เก็บทั้งหมดโดย
หรือ
หลังจากที่คุณมีไฟล์ในไดเรกทอรีที่คุณต้องการคัดลอกไฟล์ config.dist.php ลงในไดเรกทอรีการติดตั้งของคุณและเปลี่ยนชื่อเป็น config.php
อย่าลืมติดตั้งการพึ่งพาโดยดำเนินการ composer install
เปลี่ยนเนื้อหาของ config.php และป้อนข้อมูลรับรองของคุณ
ฉันมี (ปัจจุบัน) เพียงไม่กี่:
ฉันไม่ใช่แฟนตัวยงของ OOP ไม่ใช่ทุกสิ่งในโลกดิจิตอลของฉันจะต้องเป็นชั้นเรียน ดังนั้นฉันจะเก็บฟังก์ชั่นอินเทอร์เฟซอย่างหมดจด (Evenso โดยเฉพาะอย่างยิ่งการสร้างโพสต์จะง่ายกว่าในการห่อหุ้มในชั้นเรียน)
ตกลงมาตรวจสอบว่ามีอะไรบ้าง
ตัวอย่างเล็ก ๆ นี้เพียงแค่รับรองความถูกต้องกับเซิร์ฟเวอร์และเก็บโทเค็นในพื้นที่ หากมีโทเค็นที่เก็บไว้ในท้องถิ่นและมีการตรวจสอบความถูกต้องครั้งสุดท้ายมากกว่าที่ระบุไว้ใน $config['atproto']['storedsession_validity'] วินาทีที่ผ่านมาความถูกต้องจะถูกตรวจสอบกับแบ็กเอนด์ (ในกรณีของฉัน Bluesky)
และนี่คือการเตือนตัวเอง: วาง if (!atp_session_get())return false; ที่จุดเริ่มต้นของอินเทอร์เฟซ (โพสต์รับไทม์ไลน์ ... ) ฟังก์ชั่น
<?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;
}
ใช่สิ่งนี้สามารถโพสต์ลงในไทม์ไลน์ของตัวเองได้ สิ่งที่คุณต้องทำ (หลังจากรวมถึง include.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);
ฉันจะสร้างรายการที่มีฟังก์ชั่นและจุดสิ้นสุดที่ใช้งานและจะพยายามทำให้ทันสมัยอยู่เสมอ
emported_sorted_by_endpoint.md
edported_sorted_by_funtions.md