Я пытаюсь использовать API Discourse, чтобы создать список всех постов (только первых) с определённым тегом. Пока что мне удавалось получать лишь последние посты — около 40 штук, включая комментарии. При попытке получить конкретный пост по его ID некоторые запросы работали, но для некоторых я получал ответ:
{'errors': ['You are not permitted to view the requested resource.'],'error_type': 'invalid_access'}
хотя используемый мной API-ключ имеет права администратора для всех постов на нашем форуме Discourse. Кто-нибудь сталкивался с этой проблемой ранее?
Можете ли вы опубликовать свой фрагмент кода? (Без указания ключа API)
Замечаете ли вы здесь какую-либо закономерность в том, что работает, а что нет?
Привет, @RGJ, я заметил, что могу получать отдельные посты, если они изначально были в списке, полученном через posts.json. Я использовал приведенный ниже фрагмент кода:
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()
Затем я попытался изменить этот вызов на https://forum.algovera.ai/posts/{id}.json, где ID был взят из URL-адреса конкретного поста, который я просматривал.
Число в URL — это не ID, это номер поста, который является относительным по отношению к ID темы.
Если вы хотите получить ID поста, вы можете извлечь его из JSON темы как post_stream.posts[].id.
Таким образом, посты в этой теме имеют:
| ID темы | номер поста | ID |
|---|---|---|
| 255455 | 1 | 1241013 |
| 255455 | 2 | 1241026 |
| 255455 | 3 | 1241056 |
и ваш самый недавний пост в этой теме — https://meta.discourse.org/posts/1241056.json
Ах, точно, спасибо. Это сработало. Так что мне нужно вызвать, чтобы получить последние темы, а затем исходный текст первого поста в каждой теме? Я видел вызов List Topics в документации, но не уверен, какой должен быть slug.