你好,
我正在通过 Discourse API 拉取帖子。我使用的是 Python。该请求调用以下代码(本质上是一个 GET 请求),并返回类似于 此帖子 的 .json 数据。
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
返回的帖子包含一个 'read' 标志。我发送的帖子标记为 read=True,但我接收到的帖子全部标记为 read=False,除非我主动登录 Discourse 并阅读它们。
是否可以通过 API 根据 post_id 将特定帖子标记为已读?我一直在研究 pydiscourse,他们提供了一个添加阅读时间的方法,据称这也会将帖子标记为“已读”,但无论我“添加”多少阅读时间,.json 端点返回的结果仍为 false。我不关心阅读的“间隔”,只要我能标记特定的帖子 ID 即可。
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
设置阅读帖子所花费的时间
此举的副作用是将帖子标记为已读
参数:
topic_id: { post_number: ms }
time: 整个主题花费的时间(单位是什么????)
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)
类似的功能已经通过 notifications/mark-read 端点用于通知:
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
另外,如果能够将整个主题(其中的所有帖子)标记为已读,也是一种可行的变通方案。
欢迎提供任何帮助!
编辑:此功能也必须适用于私信。