Hallo,
ich extrahiere Beiträge über die Discourse-API. Dafür verwende ich Python. Die Anfrage ruft den folgenden Code auf (der im Wesentlichen eine GET-Anfrage stellt) und gibt das .json-Format ähnlich wie in diesem Beitrag zurück:
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
Die zurückgegebenen Beiträge besitzen ein 'read'-Flag. Die Beiträge, die ich sende, haben read=True, aber bei den empfangenen Beiträgen ist das Flag stets auf read=False gesetzt, es sei denn, ich melde mich aktiv bei Discourse an und lese sie.
Gibt es eine Möglichkeit, einen bestimmten Beitrag über die API als gelesen zu markieren, gegeben eine post_id? Ich habe mich mit pydiscourse beschäftigt; sie bieten eine Methode zum Hinzufügen von Lesezeit an, die angeblich auch einen Beitrag als „gelesen" markiert. Doch egal wie viel Lesezeit ich „hinzufüge", der .json-Endpunkt gibt weiterhin false zurück. Mir sind keine Lese-Lücken wichtig, solange ich spezifische Beitrag-IDs als gelesen markieren kann.
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
Legt die Zeit fest, die mit dem Lesen eines Beitrags verbracht wurde.
Eine Nebenwirkung hiervon ist, dass der Beitrag als gelesen markiert wird.
Argumente:
topic_id: { post_number: ms }
time: Gesamtzeit für das Thema (in welcher Einheit????)
timings:
"""
kwargs["topic_id"] = topic_id
kwargs["topic_time"] = time
for post_num, timing in timings.items():
kwargs["timings[{0}]".format(post_num)] = timing
return self._post("/topics/timings", **kwargs)
Ähnliche Funktionalität wurde bereits für Benachrichtigungen über den Endpunkt notifications/mark-read umgesetzt:
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
Ein weiterer möglicher Workaround wäre, falls es möglich ist, ein ganzes Thema (alle darin enthaltenen Beiträge) als gelesen zu markieren.
Jede Hilfe ist willkommen!
EDIT: Es ist erforderlich, dass dies auch für private Nachrichten funktioniert.