我想通过使用PTT(Python Twitter工具)在Twitter上发布图像。 目前,我的代码非常类似:
def _TweetMedia(self, t, m):
try:
param = {'media[]', m}
self.API.statuses.update_with_media(status = t, **param)
except Exception as e:
print("Failed to tweet media, reason: %s" % e)
return False
return True
但它失败了
Failed to tweet media, reason: Twitter sent status 403 for URL: 1.1/statuses/update_with_media.json
using parameters: (oauth_consumer_key=y&oauth_nonce=13911566611016743303&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1399668386&oauth_token=x&oauth_version=1.0&oauth_signature=z)
details: {"errors":[{"code":189,"message":"Error creating status."}]}
我真的不知道为什么。 我的图像从URL读取,然后以base64编码。
def DownloadImg(self, uri):
try:
source = b64encode(urllib2.urlopen(uri).read())
filename = uri.split('/')[-1]
return (filename, source)
except Exception as e:
print("Failed to download %s: %s." % (uri.split()[-1], e))
return (None, None)
pass
答案 0 :(得分:1)
我想知道它是如何运作的。我也许没有答案 比你更多的菜鸟,但也许我有一个领先优势。 在此API调用的文档中,它解释了它所期望的图像数据的格式:
块引用 与POST状态/更新不同,此方法需要原始多部分数据。您的POST请求的Content-Type应使用media []参数设置为multipart / form-data。
块引用
它将图像格式描述为:
块引用 此数据必须是原始图像字节或编码为base64
看起来你已经知道了base64编码,据我所知, 但是多部分要求呢? 老实说,我不知道这意味着什么,但也许这是值得研究的东西
另一个问题是图像尺寸受到限制:
块引用 注意:请求GET帮助/配置端点以获取当前的max_media_per_upload和photo_size_limit值
看起来您只是上传单张图片,但要限制图片尺寸 对GET帮助/配置端点进行一次调用 并且你应该得到一个尺寸限制,该限制应该有效,直到Twitter希望 随着时间的推移,它更加自由。 从该端点的API文档中给出的示例响应判断,它看起来像图像大小限制:
块引用
photo_size_limit“:3145728,
“photo_sizes”:{ “大”: { “w”:1024, “调整大小”:“合适”, “h”:2048 }, “中等”:{ “w”:600, “调整大小”:“合适”, “h”:1200 }, “小”:{ “w”:340, “调整大小”:“合适”, “h”:480 }, “拇指”:{ “w”:150, “调整大小”:“作物”, “h”:150 } },
有空的时候我会回到这里。 如果你搞清楚我会告诉我,我也会这样做。