Bonjour,
Je récupère des publications via l’API Discourse en utilisant Python. La requête appelle le code suivant (qui effectue essentiellement une requête GET) et renvoie un fichier .json similaire à cette publication :
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
Les publications retournées possèdent un drapeau 'read'. Les publications que j’envoie ont read=True, mais pour celles que je reçois, elles sont toutes marquées read=False, sauf si je me connecte activement à Discourse et que je les lis.
Existe-t-il un moyen de marquer une publication spécifique comme lue via l’API, étant donné un post_id ? J’ai examiné pydiscourse, qui propose une méthode pour ajouter du temps de lecture, ce qui devrait également marquer la publication comme « lue ». Cependant, peu importe la quantité de temps de lecture que j’« ajoute », l’endpoint .json renvoie toujours false. Je ne me soucie pas des « lacunes » de lecture tant que je peux marquer des identifiants de publication spécifiques.
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
Définir le temps passé à lire une publication
Un effet secondaire de cela est de marquer la publication comme lue
Args:
topic_id: { post_number: ms }
time: temps total pour le sujet (dans quelle 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)
Une fonctionnalité similaire a déjà été réalisée pour les notifications en utilisant l’endpoint notifications/mark-read :
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
Par ailleurs, une autre solution de contournement valide serait de pouvoir marquer un sujet entier (toutes les publications qu’il contient) comme lu.
Toute aide est la bienvenue !
EDIT : il est requis que cela fonctionne également pour les messages privés.