通过python将文件上传到imgur
问题描述:
我在使用python请求模块和Imgur API将图像上传到Imgur时遇到了问题。通过python将文件上传到imgur
我的代码如下:
import base64
import json
import requests
from base64 import b64encode
client_id = 'my-client-id'
headers = {"Authorization": "Client-ID my-client-id"}
api_key = 'my-api-key'
url = "http://api.imgur.com/3/upload.json"
j1 = requests.post(
url,
headers = headers,
data = {
'key': api_key,
'image': b64encode(open('1.jpg', 'rb').read()),
'type': 'base64',
'name': '1.jpg',
'title': 'Picture no. 1'
}
)
我通常会得到400响应错误。我不确定myu client_id是否错误,或者我的请求是错误的(我在url请求方面的经验很少),或者我使用Imgur API错误。
我想提交这个图像后,我想获取图像的网址。我不确定API是否有一个命令,或者python.requests模块有一个技巧,可以让我获取刚刚发布的数据(POST)。
一个非常类似的问题在这里回答,并且代码实际工作!:Trouble sending a file to Imgur
然而,当我用我的CLIENT_ID,insted的是在代码中使用的应用程序ID,它返回一个400错误,如还有当我从改变
: URL = “http://api.imgur.com/2/upload.json” 到: URL = “http://api.imgur.com/3/upload.json”
答
这是一个v3的请求,但你没有使用SSL,这是强制性的。尝试设置
url = "https://api.imgur.com/3/upload.json"
# ^
谢谢!那就是诀窍!请求继续进行,但我无法获取刚刚发布的图像的URL哈希值。你知道我应该怎么做? – Arturo 2013-04-26 19:58:48
@Mecasickle,你可以得到响应的身体的所有信息。只需添加到您的代码相同:'data = json.loads(j1.text)['data'];打印数据['link'],数据['id'],数据['deletehash']' ' – gaart 2013-04-26 20:27:55
好的,这样做了。现在我想要得到它的画廊。这里是链接http://api.imgur.com/models/gallery_image – Arturo 2013-04-26 21:11:33