@rf а кто знает где почитать как устроено взаимодействие серверов в федерации? Что бы не протокол, а простыми словами, вот пост, вот так распространяется, вот эти видят и т.д. Подозреваю сервера плеромы и мастодона еще и по разному реализуют взаимодействие.

Пост (Note) оборачивается в активити (Create) и в виде json-объекта отправляется в инбоксы подписчиков. Сервер каждого подписчика проверяет подпись запроса и кладёт пост в локальную БД. В общем-то всё.

Когда-нибудь я допишу эту статью.

@grishka ТАм дело в том, что тут
w3.org/TR/activitypub/#Overvie

описано то, чего нет, так как эндпоинты inbox в мастодоне не реализованы судя по всему. Так что задачка, что мне нужна, а именно периодически ходить и проверять ответы в беседах что бы следить за их развитием, в данный момент простым способом не решается. Такие дела.

@3draven приблизительный эквивалент APшного инбокса в клиентском API это notifications, на котором сделана вкладка "Уведомления": docs.joinmastodon.org/methods/

Если в нём нет того, что надо, скорее всего это в Мастодоне вообще не реализовано.

@grishka

@dside @grishka да, я так и подумал пока что, что придется нотификации читать и по ним восстанавливать треды. Либо timelines/public
Подумаю в следующий выходной на тему костылей :)

@3draven а как в твоём представлении выглядело бы решение с инбоксом?

upd: поясню — если тебя интересует получать сообщения, о которых тебе уведомления не приходят (например, если твой тег убрали, убрав тебя из списка получателей), то в инбоксе этого сообщения тоже не будет, несмотря на привязанность к треду. Даже до твоего инстанса может не дойти, и быть доступным только с тех инстансов, обитатели которого тегнуты + с инстансов подписчиков автора ответа (если видимость ответа позволяет).

@dside читаешь инбокс с фильтром since-id или с даты. Оно показывает все, что тебе пришло в качестве ответов других юзеров с момента последней проверки. Читаешь outbox для добывания своих ответов в свои треды. Потом дополняешь локально сохраненные деревья в клиенте тем, что нашел. Сейчас так сделано примерно, но подпиской на стрим с уведомлениями мастодон сервера (вебсокет там). Проблема в том, что приложение периодически выключается и надо считывать посты, что были пока все было выключено.

@3draven м-м. Это звучит как прямое применение dismiss. Тяни все уведомления, dismiss'ай обработанные. Если приложение выключится — уведомления продолжат накапливаться на сервере.

@dside да, я об этом и написал. Не знаю что такое дисмис, но понятно. Я на java клиент написал :) Это несложно все. Костылем больше, костылем меньше.

@dside а, там лучше есть. Если я отменю нотификацию, то ее не получат другие клиенты насколько я понимаю.
Есть /api/v1/notifications и там параметр since_id и потом просто читаешь, что надо. Но я пока не выяснил есть ли в нотификациях уведомления об ответах где юзер не упомянут. То есть болтает двое в треде, упоминает друг друга, но не автора треда. Получит ли автор нотификацию я не знаю. Но тут дело в том, что и сервер такое сообщение может не получить (без подписок). Так что вероятно забью.

@3draven именно уведомление может и получат, оно же отправляется с сервера платформозависимой штукой вроде веб-пуша, UnifiedPush, FCM или APNS. Сервер может отправлять туда же и факт дисмисса, но похоже, что не делает этого (хотя это, возможно, и временно):
github.com/mastodon/mastodon/b
(В модели Notification я на этот счёт тоже ничего не встретил.)

Угу, без тега не получит, насколько я знаю — см. выше по треду.
mastodon.ml/@dside/10965444952
Это можно достать разве что достав сообщение в JSON-LD (вышеприведённым способом с хедером и ссылкой на пост), из него коллекцию replies и обходить в ней все ветки, которые будут в том числе на других доменах. Действия несложные, но их много 👀

@dside @3draven в мастодоовском api есть метод context, который выдаёт весь тред целиком docs.joinmastodon.org/methods/

Follow

@shura @dside это да, но мне надо все треды, причем только с определенного айди. Потому как тредов много и все читать долго.

@3draven тогда только ленту собирать и по ленте ходить
@dside

@shura @dside да, я так и подумал, что придется на ней костылить. А под "по ней ходить" ты что имел в виду, там что то еще дополнительно дергать надо, одной ленты мало?

@3draven лента не будет показывать посты, в которых тебя не упомянули, вопрос ведь именно с этого начался
@dside

@shura @dside так, я запутался. А что она показывает тогда? Я думал, что просто поток всех постов сервера, нет?

@3draven а, правильно, я перепутал, думал мы про home говорим. В public должны валить все публичные посты, но туда не попадают подзамочные.
@dside

@shura @dside ну, тогда выходит придется читать этот паблик, выбирать только посты, которые ответы на посты в моих тредах и достраивать деревья. При этом сервер может вообще не получить посты если в них не упомянуты юзера с сервера или они не подписаны на автора ответа. Я это сейчас так понимаю. И при этом не знаю стоит ли паблик читать так как на груженом сервере он огромный. В общем думаю.

@3draven мне кажется проще забить на ответы без упоминания
@dside

@shura @dside да, я сейчас так и сделал в текущей версии клиента :)

@3draven что за клиент? Мастодоновский?
@dside

@shura @dside ну да, пишу для развлечения одну штуку. Пока не допишу, не хочу вдаваться в подробности :)

@3draven я тоже с мастодоном и ap заигрываю :-)
@dside

@shura @dside пока что я пришел к выводу, что мастодон это довольно кривое поделие. Но альтернатив лучше все равно нет :)

@3draven да, одни только эти кривые треды чего стоят. А вот в остальном вроде ничего
@dside

@shura @dside ну, например ты можешь написать клиент, который будет регать приложения на инстансах бесконечно и за пару месяцев забить базу мелкого инстанса под потолок :) Или вот регать аккаунты на разные почты автоматом и использовать федиверс как спамбота (не проверял, но должно сработать). Куда бы я ни залез в этот мастодон поглубже, везде косяки. Не говоря уж о крайне низком качестве документации конечно, это вообще песня :)

@3draven но это же не проблема именно мастодона. Ты тоже самое можешь делать в любых распределённых системах
@dside

правда почтовые сервисы в последнее время начали телефон спрашивать. Но это совсем говно
@3draven @dside

@shura @dside неправда. Приложения всегда аппрувит админ инстанса по нормальному. Попробуй зарегать свое приложение в фейсбуке например. Аккаунты нельзя начать регать без капчи нигде, скрытой или явной.

@3draven фейсбук - не распределённая система. Возможно капча и в мастодоне появится, просто он ещё не дорос
@dside

Show newer
Sign in to participate in the conversation
MustUdon

I like Twitter, but, Mastodon it is so excited! Feel free to register it is server just for fun! Usefull links https://instances.social https://www.reddit.com/r/Mastodon/comments/yugh2o/some_useful_mastodon_lists/?utm_source=share&utm_medium=web2x&context=3