Bonjour
,
J’ai lu ces publications utiles (1, 2) ; cependant, il me manque encore quelque chose qui m’empêche de télécharger avec succès un avatar de Python vers Discourse en utilisant l’API. Je suis l’administrateur de mon site Discourse.
La bonne nouvelle : cela fonctionne dans Postman, comme le montre l’image ci-dessous.
La moins bonne nouvelle : Je n’ai pas réussi à traduire cela en Python (j’obtiens des erreurs 400 ou 422, selon ce que je tente). J’ai essayé ceci :
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)
Cela me donne une erreur 400. J’ai également essayé d’utiliser une image locale juste pour voir si je pouvais y parvenir :
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)
Cela me donne une erreur 422 :
"failed":"FAILED","message":"undefined method `tempfile\\' for #\\u003cString:0x00007f5befda7af8\\u003e"
J’ai l’impression d’être proche, mais je suis un peu nouveau dans l’utilisation des API. Toute indication dans la bonne direction serait grandement appréciée !
