【问题标题】:uploading a file to imgur via python通过python将文件上传到imgur
【发布时间】:2013-10-31 13:16:41
【问题描述】:

我在使用 python 请求模块和 Imgur API 将图像上传到 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,插入代码中使用的应用程序 ID 时,它返回了 400 错误,以及我更改的时间

来自: 网址 = "http://api.imgur.com/2/upload.json" 至: url = "http://api.imgur.com/3/upload.json"

【问题讨论】:

    标签: python multipartform-data python-requests imgur


    【解决方案1】:

    这是一个 v3 请求,但您没有使用 SSL,这是强制性的。尝试设置

    url = "https://api.imgur.com/3/upload.json"
    #          ^
    

    【讨论】:

    • 谢谢!那成功了!请求继续进行,但我无法获取刚刚发布的图片的 URL 哈希。你知道我应该怎么做吗?
    • @Mecasickle,您可以在响应正文中获取所有信息。只需添加到您的代码中:data = json.loads(j1.text)['data']; print data['link'], data['id'], data['deletehash'] `
    • 好了,这就完成了。现在我正试图把它放在画廊里。这是链接api.imgur.com/models/gallery_image
    猜你喜欢
    • 2011-08-04
    • 2014-06-18
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2014-08-01
    • 2011-10-04
    相关资源
    最近更新 更多