Sto cercando di creare uno script per ottenere post specifici da un argomento. Vedi questa pagina Discourse API Docs
Ma continuo a ricevere il codice di stato della risposta = 413.
Qualcuno mi aiuti, per favore! Manderò $20 sul tuo conto PayPal se riesci a risolvere il problema.
def get_post_from_topic(topic_id, post_id):
endpoint = "https://www.example.com/t/" + topic_id + "/posts.json"
headers = {
"Content-Type": "application/json",
"Api-Key": api_key,
"Api-Username": api_username,
}
data = {"post_ids[]": post_id} # Ho provato 0, non ha funzionato
response = requests.get(endpoint, headers=headers, data=data)
if response.status_code == 200:
return response
Per tua informazione, la mia Api-Key e il mio Api-Username sono corretti. Le mie altre API di discourse funzionano tranne questa.
Ciao, puoi dare un’occhiata a Discourse API gen
Troverai facilmente l’API di cui hai bisogno in questo gem, quindi non dovrai implementarla separatamente.
Se hai ancora bisogno di supporto a pagamento, faccelo sapere, sposteremo l’argomento in Marketplace in modo che le persone interessate possano contattarti.
1 Mi Piace
Ciao @Ahmed_Gagan
Grazie per la risposta.
Penso di aver ancora bisogno di supporto a pagamento.
Ho spostato il post nel marketplace
Hector
(Héctor Fernández)
26 Giugno 2022, 7:20pm
6
Stai inviando un corpo, dovresti usare una richiesta POST.
1 Mi Piace
pfaffman
(Jay Pfaffman)
26 Giugno 2022, 7:39pm
7
Basta ottenere l’argomento e ordinare i post che desideri ignorando gli altri.
Inoltre, se hai l’ID del post, puoi ottenere /p/123
Ho provato l’API per recuperare un singolo post. Non restituisce “link_counts” e non ha “post_stream”.
Penso che l’API per ottenere post specifici da un argomento abbia “post_stream”.
E l’argomento che sto cercando di elaborare ha oltre 1500 post…
1 Mi Piace
pfaffman
(Jay Pfaffman)
26 Giugno 2022, 7:54pm
10
Forse devi codificare esplicitamente i tuoi dati come json?
data = '{\"post_ids[]\":' + post_id +'}'
Non funziona.
Ho provato anche json.dumps. Non funziona…
Vorrei che avessimo alcuni esempi di codice…
RGJ
(Richard - Communiteq)
26 Giugno 2022, 10:19pm
13
GET ha sempre una stringa di query e mai dati post (ecco perché ricevi 413 payload troppo grande, non si aspetta nulla). Quando interroghi dati da un server senza apportare modifiche, userai (quasi) sempre GET e non POST. Quindi dovresti usare params= invece di data=.
Penso che la documentazione per questa specifica chiamata API sia formulata male (" Request Body schema " indica in realtà POST data) quindi sto spostando questo in Bug e non devi pagarmi nulla.
import requests
import json
def get_post_from_topic(topic_id, post_id):
endpoint = f"https://forum.example.com/t/{topic_id}/posts.json"
api_username = 'system'
api_key = 'REDACTED'
headers = {
"Content-Type": "application/json",
"Api-Key": api_key,
"Api-Username": api_username,
}
params = {
"post_ids[]": post_id
}
response = requests.get(endpoint, headers=headers, params = params)
if response.status_code == 200:
return response
response = get_post_from_topic(6,8)
print(response.json())
{"post_stream": {"posts": [{"id": 8, "name": "system", "username": "system", "avatar_template": "/images/discourse-logo-sketch-small.png", "created_at": "2022-06-26T04:44:23.637Z", "cooked": "<p><a name=\"collect\"></a></p>\n<h2>\n<a name=\"what-information-do-we-collectcollect-1\" class=\"anchor\" href=\"#what-information-do-we-collectcollect-1\"></a><a href=\"#collect\">What information do we collect...\n```
5 Mi Piace
system
(system)
Chiuso
26 Luglio 2022, 11:10pm
17
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.