Fetching Responses
Vor einigen Tagen schrieb ich bei Mastodon von Problemen mit dem IndieConnector und brid.gy
Ich erwähnte dort, dass ich schon lange vorhabe, externe Antworten, Likes und Reposts selbst zu holen. Das ist allerdings nicht ganz so trivial, wie es auf den ersten Blick scheint.
Leider bin ich bisher nicht dahintergekommen, warum das Einsammeln von Antworten über brid.gy nicht mehr so funktioniert. Aktuelle Logs kann ich mir nicht ansehen, weil sie mit Fehlermeldungen abbrechen, bevor eine Webmention geschickt wird.
Es ist also doch Zeit, dieses Feature in Angriff zu nehmen und es bei GitHub von der Upcoming-Feature-Liste zu streichen. Und genau das habe ich getan.
Postet man automatisch zu Mastodon oder Bluesky, speichert das IndieConnector-Plugin (IC) schon die URLs zu den Posts. Im Falle von Mastodon kann man zudem selbst eine URL hinterlegen (das wird es dann auch für Bluesky geben).
Das sind schon einmal gute Voraussetzungen für das Feature, denn IC weiß somit, wo es nachschauen kann, um Reaktionen einzusammeln. Mastodon stellt bereitwillig drei Endpunkte bereit, um an Likes, Reposts und Replies zu kommen – wunderbar.
Es gibt schon ein paar Lösungen und Beschreibungen, wie man das mit JavaScript lösen kann. Die funktionieren gut, für die Plugins muss (und will) ich jedoch den PHP-Weg gehen.
Der IC geht alle URLs durch, holt sich die Antworten und schickt dann eine Webmention an sich selbst. Jede Response hat eine virtuelle Seite mit entsprechenden Microformats. Von hier an läuft der gewohnte Webmention-Ablauf ab. Ein Grund, warum ich diesen Weg gewählt habe. Auf diese Weise muss ich wirklich nur das Abholen bauen und nicht noch einen weiteren Weg öffnen, um Daten abzulegen usw.
Anders als bei der JavaScript-Lösung muss ich mir merken, welche Reaktionen ich schon verarbeitet habe, damit ich nicht ständig dieselben Webmentions verschicke und unnötige Last auf den Systemen erzeuge. Ich merke mir also für jeden Mastodon-Endpunkt die letzte bekannte Response-ID und beende dann den Ablauf, sobald die erreicht ist.
Das klappt bisher super.
Seit ein paar Stunden sitze ich nun aber hier und grübele, warum diese Webmentions nicht ankommen wollen. Verschickt werden sie. Und so cool ich diese ganze Technik finde, asynchrone Prozesse zu debuggen ist und bleibt fummelig. Ich versuche einzelne Schritte mit Unit-Tests abzudecken, aber manchmal – wie gerade – sitze ich dann trotzdem da und schaue fragend auf den Bildschirm.
Ich hoffe, dass ich das Problem schnell gelöst bekomme. Dann hätte ich den kompletten Ablauf für Mastodon schon fertig und müsste für Bluesky "nur" noch das Abholen bauen (denn danach läuft es genauso weiter wie bei Mastodon).
Update
Ich habe eine falsche (alte) URL für meinen Webmention-Endpunkt benutzt und alle Webmentions ins Nirvana geschickt, deshalb kamen sie nicht an 🤦🏼♂️
Kommentar schreiben