Здравствуйте,
Я извлекаю посты через API Discourse, используя для этого 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. Меня не беспокоят «пропуски» в чтении, главное — пометить конкретные идентификаторы постов как прочитанные.
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
Установить время, проведенное за чтением поста.
Побочным эффектом этого является пометка поста как прочитанного.
Аргументы:
topic_id: { номер_поста: миллисекунды }
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)
Также допустимым обходным решением будет возможность пометить всю тему (все посты внутри) как прочитанную.
Любая помощь будет приветствоваться!
РЕДАКТИРОВАНИЕ: это также должно работать для личных сообщений.