2013-04-29 69 views
0

这是一个后续问题: uploading a file to imgur via python提交上传Imgur图片库

我刚刚上传的图像Imgur,但我发现它不是公众看法。在他们的API网站上,他们说如果你想让它公开上传,你应该把它提交给画廊。

我编写了一个小应用程序,可以用一个图像做到这一点,但我不确定它是不是工作,因为我没有提出正确的要求,或者因为我可能缺少使用Oauth2模块,到目前为止我没有要求使用它(我只是上传图片,但我不需要查看其他用户使用我的应用上传的内容)。

import base64 
import json 
import requests 

from base64 import b64encode 

client_id = '6a06c6bb8360e78' 

headers = {"Authorization": "Client-ID 6a06c6bb8360e78"} 

api_key = '6a06c6bb8360e78' 

url = "https://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' 
    } 
) 


data=json.loads(j1.text)['data'] 
data_id=data['id'] 

data_id_str=data_id.encode('ascii','ignore') 

# Now I try to push the iamge to the gallery with id data: 

url_gallery = "https://api.imgur.com/3/gallery/image/{id}.json" 

r2 = requests.post(url_gallery, headers=headers, data={'title': 'First image', 'terms': '1', 'id': data_id_str}) 

答案后做,我得到: r2.text 是403错误:

u'{"data":{"error":"Unauthorized", 
"request":"\\/3\\/gallery\\/image\\/{id}.json", 
"parameters":"terms = 1, id = 1jhIc2R, title = First 
image","method":"POST"},"success":false,"status":403}' 

这是Imgur API链接,提交图片,我不知道,我没有错:https://api.imgur.com/endpoints/gallery#to-gallery

回答

3

Alan来自Imgur here。您需要通过身份验证才能提交到图库(因此未经授权的错误)。目前,您看起来像是匿名上传,然后尝试匿名提交到图库。您需要从OAuth2获取图库部件的access_token。

+0

该死的,Imgur的艾伦;) – 2014-12-01 12:51:15