Ciao
,
Ho letto questi post utili (1, 2); tuttavia, mi manca ancora qualcosa che mi impedisce di caricare correttamente un avatar da Python a Discourse utilizzando l’API. Sono l’amministratore del mio sito Discourse.
La buona notizia: Funziona in Postman, come mostrato di seguito.
La notizia non così buona: Non sono riuscito a tradurlo in Python (ottenendo errori 400 o 422, a seconda di cosa tento). Ho provato quanto segue:
img_data = requests.get("my_image_url").content
data={
"type": "avatar",
"user_id": user_id,
"synchronous": True,
"file": img_data
}
url = "<my site>/uploads.json"
response = requests.request("POST", url, headers=headers, data=data)
Questo mi dà un errore 400. Ho anche provato a usare un’immagine locale solo per vedere se riuscivo a farla funzionare:
with open('my_local_image.jpg', "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf8")
data={
"type": "avatar",
"user_id": user_id,
"synchronous": True,
"file": image_b64
}
url = "<my site>/uploads.json"
response = requests.request("POST", url, headers=headers, data=data)
Questo mi dĂ un errore 422:
"failed":"FAILED","message":"undefined method `tempfile\\' for #\\u003cString:0x00007f5befda7af8\\u003e"
Sento di essere vicino ma sono un po’ nuovo nell’uso delle API. Qualsiasi suggerimento nella giusta direzione sarebbe molto apprezzato!
