Implementasi yang ringan dari protokol AtproTo untuk bersenang -senang dengan bluesky
Setelah melihat ke perpustakaan yang sudah tersedia untuk berkomunikasi dengan AtproTo, saya memutuskan untuk pergi dengan cara saya sendiri. Saya entah bagaimana tidak menggunakan perpustakaan yang mencakup selusin perpustakaan lain di komposer mereka.
Saat ini (saya akan menyebutnya pra-alpha) saya hanya menyertakan satu perpustakaan pihak ketiga, yaitu
Mungkin itu akan menjadi lebih di masa depan.
Untuk membuat semuanya berantakan, saya mengganti nama hampir semua fungsi ..... Anda dapat menemukan daftar fungsi yang saya terapkan di sini:
Fungsi yang diimplementasikan diurutkan berdasarkan endpoint.md
Fungsi yang diimplementasikan diurutkan berdasarkan nama fungsi.md
Anda dapat menginstal pustaka dengan komposer dengan mengeksekusi
composer require schnoog/php_atproto
Ini akan menginstal perpustakaan di direktori vendor biasa. Sekarang salin file /vendor/schnoog/php_atproto/src/config.dist.php ke direktori instalasi Anda dan ganti nama ke config.php
Atau gunakan perintah berikut dari dalam direktori instalasi Anda untuk menyalin file secara otomatis (jika ada alreay a name config.php di direktori instal itu tidak akan ditimpa.
php -r 'if(!file_exists(__DIR__ . "/config.php")) copy (__DIR__ . "/vendor/schnoog/php_atproto/src/config.dist.php", __DIR__ . "/config.php");'
Ubah konten config.php dan masukkan kredensial Anda
Ini adalah cara untuk pergi jika Anda tidak menginstal komposer sama sekali.
Saya membuat repositori kedua yang mencakup semua file yang diperlukan untuk menjalankan benda ini.
Unduh versi zip dari sini: Versi PHP_ATPROTO yang dikemas
Buka zip saja, atur kredensial Anda di config.php dan Anda siap untuk pergi. Ya, itu sangat mudah
Ini berarti Anda memiliki salinan seluruh repositori oleh
atau
Setelah Anda memiliki file di direktori yang Anda inginkan, salin file config.dist.php ke direktori instalasi Anda dan ganti nama ke config.php
Jangan lupa menginstal ketergantungan dengan mengeksekusi composer install
Ubah konten config.php dan masukkan kredensial Anda
Saya memiliki (saat ini) hanya beberapa:
Saya bukan penggemar terbesar OOP. Tidak semua yang ada di dunia digital saya harus menjadi kelas. Jadi saya akan menjaga antarmuka fungsi murni (Evenso yang terutama membuat posting akan lebih mudah untuk dirangkum dalam suatu kelas)
Oke, mari kita periksa apa yang tersedia
Contoh kecil ini hanya mengotensial terhadap server dan menyimpan token secara lokal. Jika token tersimpan lokal tersedia dan pemeriksaan validitas terakhir dilakukan lebih dari yang ditentukan dalam $config['atproto']['storedsession_validity'] detik yang lalu, validitas akan diperiksa terhadap backend (dalam kasus saya bluesky)
Dan di sini mengingatkan untuk diri saya sendiri: Tempel if (!atp_session_get())return false; Di awal antarmuka (postingan, dapatkan timeline ...) fungsi.
<?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;
}
Ya, hal ini sebenarnya dapat memposting ke timeline sendiri. Yang perlu Anda lakukan (setelah termasuk includer.php) memanggil fungsi.
Tapi ini datang dengan keterbatasan (seperti semuanya di bumi):
Berikut sedikit tentang parameter untuk fungsi utama 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'];
Seperti yang disebutkan sebelumnya, Anda dapat memiliki gambar atau kartu web. Jika Anda mendefinisikan keduanya (dan memberikan fungsi dengan mereka;)), hanya kartu web yang akan ditampilkan
$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";
Oke, mari kita lihat bagaimana beberapa panggilan Anda selesai
<?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);
Ya, juga membaca timeline sendiri (atau pakan atau bagaimanapun disebut) juga cukup mudah. Tbh, hal paling termudah tersedia
<?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);
Fungsi ini entah bagaimana terbatas. Saat ini saya tidak dapat menerima hasil yang valid dari app.bsky.feed.searchPosts . Jadi sebaliknya saya membaca dari https://search.bsky.social/search/posts
Tidak bagus, tapi itu berhasil
<?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);
Saya akan membuat daftar dengan fungsi dan titik akhir yang diimplementasikan dan akan mencoba untuk terus memperbarui.
Implemented_sorted_by_endpoint.md
Implemented_sorted_by_funtions.md