Ciao,
sto recuperando i post tramite l’API di Discourse. Sto usando Python per farlo. La richiesta esegue il seguente codice (che sostanzialmente effettua una richiesta GET) e restituisce un file .json simile a questo post:
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
I post restituiti hanno un flag 'read'. I post che invio sono contrassegnati come read=True, ma per i post che ricevo sono tutti segnati come read=False, a meno che non acceda attivamente a Discourse e li legga.
Esiste un modo per segnare un post specifico come letto tramite l’API, dato un post_id? Ho dato un’occhiata a pydiscourse e offrono un metodo per aggiungere il tempo di lettura che, a quanto pare, dovrebbe anche segnare il post come “letto”, ma non importa quanto tempo di lettura io “aggiunga”, l’endpoint .json restituisce sempre false. Non mi interessano le “pause” nella lettura, purché possa segnare specifici ID di post come letti.
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
Imposta il tempo trascorso leggendo un post
Un effetto collaterale di questa operazione è segnare il post come letto
Argomenti:
topic_id: { numero_post: ms }
time: tempo complessivo per l'argomento (in quale unità????)
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)
Una funzionalità simile è già stata realizzata per le notifiche utilizzando l’endpoint notifications/mark-read:
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
Inoltre, un’altra soluzione alternativa valida sarebbe se fosse possibile segnare un intero argomento (tutti i post al suo interno) come letto.
Qualsiasi aiuto è benvenuto!
EDIT: è necessario che questa funzionalità funzioni anche per i messaggi privati.