@top @admin @rf @ru @russian_mastodon тут возникла ситуация, что в треде я не видел ответов. То есть. Есть корневой пост. Я отвечаю. Мне говорят, что уже отвечено. А в треде я вижу только три поста, корень, свой и ответ мне. Я не в бане насколько я понимаю. Как такое может быть?
Если тебя не помянули в комменте и никто с твоего инстанса не подписан на того автора, то копия сообщения на твой инстанс не будет послана, поэтому твой инстанс с большой вероятностью этот коммент не увидит. На мало популярных серверах это распространённое явление.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon да, инстанс у меня личный, под себя любимого поднял. Есть правда ретранслятор, который пересылает. Но понятно, спасибо. Выглядит это так себе для федеративного обмена.
@top @admin @rf @ru @russian_mastodon раз уж такое дело, может кто знает. /api/v1/timelines/public
Это апи для получения публичного инбокса на серваке? Хочется считать тред какой то целиком и дочитывать его по мере поступления ответов.
Это апи для фронтенда, для межсерверных взаимодействий не используется.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon а есть где то апи для того что бы считать и дочитывать тред? И где межсерверное описано?
@top @admin @rf @ru @russian_mastodon ну и фронт тоже читает треды, он это делает этим эндпоинтом?
> ну и фронт тоже читает треды, он это делает этим эндпоинтом?
Фронт обращается только к своему серверу, к чужим не обращается.
> а есть где то апи для того что бы считать и дочитывать тред?
У мастодона есть межсерверное апи, через которое можно запросить ответы (у плеромы нет, например), но используется ли оно на практике я не видел.
> И где межсерверное описано?
API можно исследовать самостоятельно курлом, например:
curl -H 'Accept: application/activity+json' 'https://mtdn.anyqn.com/users/3draven/statuses/109653670409451907' | python3 -m json.tool
Смотри директиву "replies" в ответе, там ссылка на соответствующий api для получения ответов на пост.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon спасибо, пойду копаться
@top @admin @rf @ru @russian_mastodon а, это все же активити паб. Придется читать таки.
Ну да, всё межсерверное взаимодействие происходит по протоколу AP.
А да, не очевидный момент, о котором мало где упоминают, ко многим урлам что ты видишь в адресной строке браузера на AP инстансах, можно обратиться передав хедер Accept: application/activity+json и тогда сервер вернёт ответ в формате jsonld, а не html.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon начал смотреть и кажется клиентский апи мастодона не соответсвует спеке. Буду копаться дальше. Спасибо.
@top @admin @rf @ru @russian_mastodon
Вот конкретно
https://mtdn.anyqn.com/inbox
https://mtdn.anyqn.com/users/3draven/inbox
Этих эндпоинтов нет. А именно они нужны что бы прочитать все ответы во всех тредах, что накопились с момента последней проверки. Что бы не читать миллион раз по каждому треду по отдельности.
Я так понимаю у мастодона вместо
https://mtdn.anyqn.com/inbox -> /api/v1/timelines/public
А вместо второго вообще неясно, что использовать пока. Бида.
@top @admin @rf @ru @russian_mastodon
Вот за хидер спасибо, полезный. С него зашел в
https://mtdn.anyqn.com/users/3draven
там эндпоинты в ответе описаны
"inbox": "https://mtdn.anyqn.com/users/3draven/inbox",
"sharedInbox": "https://mtdn.anyqn.com/inbox"
Но на серваке их реально нет.
inbox для входящих post запросов, а то что ты ищешь это outbox.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon
Видать я плохо читал. Мне показалось, что outbox это эндпоинт что бы получить, что написал юзер, а inbox это то, что написали ему. То есть если я хочу получить все ответы на все треды юзера мне надо именно inbox, нет? Причем мне надо получить ответы и самого юзера на его треды и других людей, на все треды юзера. То есть инкрементное развитие всех тредов с определенного момента в прошлом до текущего. Что бы периодически считывать развитие бесед.
Не, по идее в outbox только то что юзер отправил в паблик. Эндпоинт inbox принимает только post запросы (хотя может с авторизацией и отдаст то что ему предназначено, хз, это не исследовал). Можно ли как-то прямым путём получить сообщения, предназначенные другому пользователю, хоть и публичные, это хз.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon
Спасибо. Пойду копаться дальше.
@3draven я сейчас, возможно, неожиданную вещь скажу, но прямо в первоисточнике, в спецификации протокола ActivityPub, есть несложная обзорная секция в самом начале: https://www.w3.org/TR/activitypub/#Overview
Если там не хватает каких-то деталей или наоборот, что-то лишнее, можно спросить предметно.
@dside пойду читать.
@dside а, так я там и прочитал про инбокс. Нет такого эндпоинта в мастодоне.
@3draven ну как это нету, смотри, вот твой:
$ curl -H "Accept: application/activity+json" "https://mtdn.anyqn.com/@3draven" 2>/dev/null | jq . |
grep inbox
"inbox": "https://mtdn.anyqn.com/users/3draven/inbox",
"sharedInbox": "https://mtdn.anyqn.com/inbox"
@dside а попробуй его дернуть. Описание есть, а его нет.
@dside сделаю ка я им багу в гитхабе. Опять пошлют наверное, но хоть знать будут. Ну или объяснят где искать.
@3draven $ curl -XPOST -H "Content-Type: application/activity+json" "-d{}" "https://mtdn.anyqn.com/users/3draven/inbox" 2>/dev/null
Request not signed
Всё честно, сообщение я не подписал, вот инбокс его и не принял.
@dside это гет запрос. Там в обзоре, что ты прислал написано, что вы можете гетнуть свой инбокс что бы прочитать свои сообщения последние.
@3draven а, это часть client-to-server API которую Мастодон, по-моему, не реализует. Но это и не про федерацию. Федерация это server-to-server.
@3draven тикет про это уже есть: https://github.com/mastodon/mastodon/issues/10520
Так эндпоинт есть, в гитхабе речь немного о другом, там про c2s в целом. То что эндпоинт не все теоретические возможности реализует это ок. Для s2s этот эндпоинт работает.
Ну и не очень понятно зачем тебе inbox для изначальной задачи, учитывая что ответ из треда тебе на инстанс всё навно не прилител, соответственно его и в инбоксе тоже не будет. Для ретривинга треда как раз больше подошёл бы эндпоинт типа https://mtdn.anyqn.com/users/3draven/statuses/109653670409451907/replies.
@dside @admin @rf @ru @russian_mastodon @3draven@top @dside @admin @rf @ru @russian_mastodon
Изначальный вопрос был про другое. Там не прилетело, кривое и ладно.
Я потом спросил другое раз уж оказалось, что кто-то соображающий есть :) Задача проста. Мне надо следить с своего клиент за развитием всех моих бесед. То есть за своими ответами (откуда бы я их ни написал) и за ответами других. В своих тредах. Причем надо следить инкрементно. То есть не читать треды по одному, раз, и читать только то, что наросло с последней проверки.
@top @dside @admin @rf @ru @russian_mastodon
@top @dside @admin @rf @ru @russian_mastodon
Ну, жаль :) Насколько я понимаю сейчас это придется делать с костылями. Типа читать все нотификации и по ним восстанавливать треды или что-то такое. Или читать /timelines/public и по нему восстанавливать треды. Костыли в общем. Но, не первый раз, так что придумаю постепенно..видать придется.
@grishka ТАм дело в том, что тут
https://www.w3.org/TR/activitypub/#Overview
описано то, чего нет, так как эндпоинты inbox в мастодоне не реализованы судя по всему. Так что задачка, что мне нужна, а именно периодически ходить и проверять ответы в беседах что бы следить за их развитием, в данный момент простым способом не решается. Такие дела.
Roman, ты хочешь c2s что ли? Да, на него все забили. Кажется, что тебе нужно клиентское апи мастодона https://docs.joinmastodon.org/api/guidelines/
@grishka А в клиентском апи мастодона тоже нет такого.
Ну в целом всё так как @admin описал. Ты в своём комменте упоминаешь ники пользователей, твой инстанс рассылает сообщение на каждый инстанс упомянутого пользователя плюс на каждый инстанс тех пользователей, которые на тебя подписаны. Но при этом на каждый инстанс шлётся только один раз в один общий "shared inbox".
Плерома и Мастодон работают более менее одинаково и даже с Френдика более менее норм. А вот например Pixelfed, Hubzilla и т.д. что-то делают очень по своему, у меня с ними федерирование не работает.
@rf @3draven @ru @russian_mastodon #fediverse #mastodon