使用Quizlet API为图像和Python3请求发送imageData[]的正确方法
我正在制作抽认卡,以便在团队中学习名字。该实现是Slack和Quizlet之间的集成;从Slack中提取姓名和照片,并将其放入私人Quizlet集合中。我昨晚刚升级到premium,所以我应该可以上传图片了 我正在OSX上使用Python3,并已成功进行身份验证。我之所以知道这一点,是因为我能够使用以下代码通过API()成功地制作一组卡片:使用Quizlet API为图像和Python3请求发送imageData[]的正确方法,python,json,api,Python,Json,Api,我正在制作抽认卡,以便在团队中学习名字。该实现是Slack和Quizlet之间的集成;从Slack中提取姓名和照片,并将其放入私人Quizlet集合中。我昨晚刚升级到premium,所以我应该可以上传图片了 我正在OSX上使用Python3,并已成功进行身份验证。我之所以知道这一点,是因为我能够使用以下代码通过API()成功地制作一组卡片: url = 'https://api.quizlet.com/2.0' headers = { 'Authorization': 'Bearer '
url = 'https://api.quizlet.com/2.0'
headers = {
'Authorization': 'Bearer ' + data["access_token"]
}
def create_set():
#POST /sets - Add a new set
payload = {
'title':'test0',
'terms': names, #names is a preassembled list
'definitions': pictures, #as is pictures
'lang_terms': 'en',
'lang_definitions': 'en',
'visibility': 'password',
'password': 'secret_password'
}
call = requests.post(url+"/sets", headers=headers, json=payload)
return call
现在我可以把名字,甚至是松弛的个人资料照片的链接放到抽认卡上了,我对这些图片的发布感到不知所措。这是我的代码:
def upload_photos():
#POST https://api.quizlet.com/2.0/images Upload one or more images
url = 'https://api.quizlet.com/2.0'
headers = {'Authorization': 'Bearer ' + data["access_token"]}
# ,'Content-type': 'multipart/form-data'
imageData = {
'imageData': open(pictures[0], 'rb')
}
payload = {
'imageData':pictures[0]
}
call = requests.post(url+"/images", headers=headers, files=imageData, json=payload)
return call
我尝试了以下方法:
- 玩弄有效负载JSON。当我给它整个图片列表时,与[X]中的一个元素相反:
b'{“http_code”:400,“error”:“validation_errors”,“error_title”:“error”,“error_description”:“imageData”参数丢失或无效。”,“validation_errors”:[“imageData”参数丢失或无效。”]}
- 尝试手动添加多部分/表单数据头。(请参见注释掉的行)。然而,这给了我:
b'{“http\u code”:400,“error”:“client\u developer\u error”,“error\u title”:“error”,“error\u description”:“预期的imageData参数”}
- 当我尝试发送打开的文件时,我被告知JSON不会以这种方式序列化,这是有道理的
- 当我只给出文件所在位置的数组列表时,我得到了关于imageData无效的相同错误李>
- 我尝试了我能找到的Quizlet的每一个包装器/Python包,但它们似乎都被抛弃了,大部分都缺少文档李>