Hola,
Estoy extrayendo publicaciones a través de la API de Discourse. Estoy utilizando Python para ello. La solicitud ejecuta el siguiente código (que esencialmente realiza una solicitud GET) y devuelve un .json similar a esta publicación.
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
Las publicaciones devueltas tienen una bandera 'read'. Las publicaciones que yo envío tienen read=True, pero las que recibo todas están marcadas como read=False, a menos que inicie sesión activamente en Discourse y las lea.
¿Existe alguna forma de marcar una publicación específica como leída a través de la API dado un post_id? He estado investigando pydiscourse y ofrecen un método para agregar tiempo de lectura que supuestamente también marca la publicación como “leída”, pero sin importar cuánto tiempo de lectura “agregue”, el punto final .json sigue devolviendo false. No me importan los “huecos” de lectura, siempre y cuando pueda marcar IDs de publicaciones específicos.
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
Establece el tiempo dedicado a leer una publicación
Un efecto secundario de esto es marcar la publicación como leída
Argumentos:
topic_id: { post_number: ms }
time: tiempo total para el tema (¿en qué unidad????)
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)
Funcionalidad similar ya se ha logrado para notificaciones utilizando el punto final notifications/mark-read.
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
Además, otra solución viable sería si es posible marcar un tema completo (todas las publicaciones dentro de él) como leído.
¡Cualquier ayuda es bienvenida!
EDIT: Es necesario que esto también funcione para mensajes privados.