BlueskyПрийнявши факт що для розробки нативних апок
я недостатньо розумний, вирішив зробити щось простіше.
Послухав
черговий епізод подкасту Startups are hard Макса Іщенко, де той схвально відгукується про відкритість Bluesky. Мені ще давно дали туди інвайт, але я не заходив. Вирішив подивитися.
Bluesky — це твітер на відкритому протоколі, без алгоритмів та сумнівних власників. Зараз він потроху відвойовує аудиторію в тих місцях, де твітер заблокували, або серед тих людей, яким не подобається політика твітеру.
Коли я робив
Donate1024, то хотів, щоб збори публікувались не тільки в телеграм бот, телеграм канал та на сайт, а ще й у твітер, фейсбук та інстаграм.
Але, на жаль, зробити це дуже складно через
закритість екосистем. Тому я навіть не намагався, і просто забив.
Протокол Bluesky,
AT Proto, відкритий, а для доступу до API не потрібно проходити через пекельні кола верифікації та отримання токенів. Реєструєшся і твої логін та пароль і є ключами доступу.
Дивовижно, наскільки ускладнений є доступ до API великих сервісів, генерація мільйона ключів, збереження їх у файли, токен щоб отримати токен яким будеш рефрешити токен. Я вже не кажу про IAM, через який просто хочеться викинути все у вікно.
Далі все просто — є перелік методів: створити пост, завантажити картинку, отримати якусь інформацію. API повний, тобто використовуючи лише його, можна писати власні клієнти, алгоритми стрічок, рахувати статистику і так далі.
Спільнота вже створила цілу купу апок під Bluesky, ось, наприклад, добірка:
https://www.growbluesky.com/Офіційний SDK для AT Proto є тільки тайпскрипиту та пітону, для вашої мови теж швидше за все буде щось від ком'юніті. Donate1024 написаний на Ruby on Rails, під Ruby є декілька SDK, найживіший серед яких це
minisky. Його я й взяв. Трішки повозився, щоб передати логін та пароль, а далі все просто — методи описані в документації, бери й роби. Єдина особливість це те, що для форматування тексту AT Proto використовує не розмітку, а так звані фасети. Тобто замість тут буде [посилання](https://..) передається просто текст тут буде посилання і окремо об'єкт фасету, який вказує індекси початку та кінця фасету та тип (посилання, хештег, юзернейм):
{
index: {
byteStart: 6,
byteEnd: 15
},
features: [{
$type: 'app.bsky.richtext.facet#link',
uri: 'https://example.com'
}]
}
Здається що це дуже незручно, бо потрібно проходити по тексту, щоб знаходити індекси початку та кінця. Так само зроблено і в телеграмі, хоча телеграм дає можливість передавати маркдаун який він вже конвертує у фасети всередині.
Я спочатку здивувався та бомбанув чому так, а потім прочитав
мотивацію, де один з розробників наводить аргументи за, головний з яких це сумісність між різними клієнтами, тому я попустився та погодився.
Щоб прикріпити до поста картинку потрібно її спершу завантажити на сервер, отримати посилання, а потім вставити його у пост. Дещо незручно, але вже як є. Не знаю чи можна завантажувати через API відео, здається що вже так, але я ще не пробував. Через вебклієнт можна.
Також випадково натрапив на рейтліміт. Через те що в мене не зберігалась сесія між постами, я перевищив ліміти на логін (хоч і коректний) і система мене заблокувала. Мусив чекати добу поки відпустить.
API дозволяє вказати дату коли було зроблено пост. Дуже зручно, щоб перегнати у Bluesky всю історію, що я й зробив.
Результат:
https://bsky.app/profile/donate1024.orgЯк і в
боті, кожного дня на акаунті буде публікуватися новий збір та новий звіт. Підписуйтесь, донатьте.
Платформа дуже класна своєю відкритістю. Я не знаю які плани щодо монетизації, дуже сподіваюсь що засновники будуть дотримуватися своїх цінностей.
Також підписуйтесь на
https://bsky.app/profile/rozhkov.me. Хоч в мене ніяк не ходить займатися мікроблогінгом, буду пробувати.
#проєкти #donate1024
permalink |
@full_of_hatred👇Щоденні донати💰на ЗСУ🪖
🫡
@Donate1024Bot