Протокол протокола Atproto легкий вес, чтобы повеселиться с Bluesky
Посмотрев уже доступные библиотеки для общения с Atproto, я решил пойти своим путем. Я каким -то образом воздерживаюсь от использования библиотек, которые включают в себя дюжину других библиотек в их Composer.json, в то время как реальная функциональность связи может быть покрыта на 3 -м сторонних компонентах.
В настоящее время (я бы назвал это до Альфа) Я включаю только одну стороннюю библиотеку, а именно
Может быть, это станет больше в будущем.
Чтобы сделать все менее беспорядок, я переименовал почти все функции ..... Вы можете найти список функций, которые я здесь реализовал:
Реализованные функции, отсортированные по endpoint.md
Реализованные функции, отсортированные по имени function.md
Вы можете установить библиотеку с композитором, выполнив
composer require schnoog/php_atproto
Это установит библиотеку в обычный каталог поставщиков. Теперь скопируйте файл /vendor/schnoog/php_atproto/src/config.dist.php php_atproto/src/config.dist.php в свой каталог установки и переименовать в config.php
Или используйте следующую команду из вашего каталога установки для автоматического копирования файла (если в каталоге установки есть Alreay name 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 и введите свои учетные данные
Это способ пойти, если у вас вообще нет установленного композитора.
Я создал второй репозиторий, который включает все файлы, необходимые для запуска этой вещи.
Загрузите версию ZIPPD здесь: упакованная версия php_atproto
Просто расстегните его, установите свои учетные данные в config.php , и вы готовы к работе. Да, это действительно так просто
Это означает, что у вас есть копия всего хранилища
или
После того, как у вас есть файлы в желаемом каталоге, скопируйте файл config.dist.php в свой каталог установки и переименовать в config.php
Не забудьте установить зависимость, выполнив composer install
Измените содержание config.php и введите свои учетные данные
У меня есть (в настоящее время) лишь немногие:
Я не самый большой поклонник ООП. Не все в моем цифровом мире должно быть классом. Так что я буду сохранить интерфейс чисто (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;
}
Да, эта вещь на самом деле может опубликовать в собственную временную шкалу. Все, что вам нужно сделать (после включения 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);
Я создам список с реализованными функциями и конечными точками, и постараюсь держать его в курсе.
Реализация_SORTED_BY_ENDPOINT.MD
Реализация_SORTED_BY_FUNTICES.MD