J’essaie d’utiliser l’API Discourse pour créer une liste de tous les messages (uniquement les premiers messages) avec une balise spécifique. Jusqu’à présent, je n’ai pu obtenir que les derniers messages, ce qui récupère environ 40 messages, y compris des commentaires. Lorsque j’ai essayé de récupérer un ID de message spécifique, certains ont fonctionné, mais pour d’autres, j’ai obtenu la réponse
{'errors': ['You are not permitted to view the requested resource.'],'error_type': 'invalid_access'}
même si la clé API que j’utilise a un accès administrateur à tous les messages sur notre Discourse. Quelqu’un a-t-il déjà rencontré ce problème ?
Pouvez-vous publier votre extrait de code ? (Sans inclure la clé API)
Voyez-vous un schéma ici indiquant ce qui fonctionne et ce qui ne fonctionne pas ?
Salut @RGJ, j’ai remarqué que je pouvais récupérer des publications individuelles si elles figuraient dans la liste initialement récupérée par posts.json. J’ai utilisé l’extrait de code ci-dessous
url = "https://forum.algovera.ai/posts.json"
username = "algovera"
params = {'Api-Key': api_key, "Api-Username": username}
r = requests.get(url = url, params = params)
data = r.json()
Ensuite, j’ai essayé de changer cet appel en https://forum.algovera.ai/posts/{id}.json", où l’ID a été pris de l’URL de la publication particulière que je regardais.
Le numéro dans l’URL n’est pas l’ID, c’est le numéro du message, qui est relatif à l’ID du sujet.
Si vous voulez obtenir l’ID du message, vous pouvez le récupérer à partir du JSON du sujet en tant que post_stream.posts[].id
Ainsi, les messages dans ce sujet ont
| ID du sujet | Numéro du message | ID |
|---|---|---|
| 255455 | 1 | 1241013 |
| 255455 | 2 | 1241026 |
| 255455 | 3 | 1241056 |
et votre message le plus récent dans ce sujet est https://meta.discourse.org/posts/1241056.json
Ah, merci. Ça a fonctionné, alors que devrais-je appeler si je veux récupérer les derniers sujets, puis le texte brut du premier message de chaque sujet ? J’ai vu l’appel « Lister les sujets » dans la documentation, mais je ne suis pas sûr de ce que devrait être le slug.