将上传的Imgur图片提交到图库

时间:2013-04-29 16:05:23

标签: python post multipartform-data python-requests imgur

这是一个跟进问题: uploading a file to imgur via python

我刚刚将图片上传到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

1 个答案:

答案 0 :(得分:3)

来自Imgur的艾伦来自这里。您需要通过身份验证才能提交到图库(因此未经授权的错误)。目前,您似乎是匿名上传,然后还尝试匿名提交到图库。您需要从OAuth2获取图库部分的access_token。