2014-05-09 27 views
1

我想通过使用PTT(Python Twitter工具)在Twitter上发布图像。 目前,我的代码是完全是这样:如何在Python Twitter工具库中使用状态/ update_with_media?

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 

回答

1

我想知道它是如何工作的。我还没有答案,我可能比你更喜欢一个noob,但也许我有领先。 在文档此API调用它解释的格式,它预计的图像数据:

块引用 不同于POST状态/更新,这种方法预计原始多部分数据。您的POST请求的内容类型应使用media []参数设置为multipart/form-data。

块引用

它描述的图像格式为:

块引用 这个数据必须是原始图像的字节或按Base64编码

看起来像你得到了base64编码的权利,据我所知, 但多部分要求呢? 老实说,我不知道这意味着什么,但也许这东西寻找到

另一个小问题,就是将图像尺寸限制:

块引用 注:请求得到帮助/配置端点获得当前max_media_per_upload和photo_size_limit值

看起来你只是上传单个图像,但得到的图像大小限制你 进行一次调用获取帮助/配置端点 ,你应该得到一个应该是有效的大小限制,直到Twitter有希望让 它随着时间的推移更自由。 从该端点它看起来像的图像尺寸的限制API文档中给出的示例响应判断是:

块引用

photo_size_limit“:3145728,

”photo_sizes“:{ “大”:{ “W”:1024, “调整大小”: “适合”, “H”:2048} , “中等”:{ “W”:600, “调整大小”: “适合”, “H”:1200 }, “小”:{ “W”:340, “调整大小”: “适合”, “H”:480 }, “拇指”:{ “W”:150, “调整大小”: “作物”, “H”:150 }} ,

我要回到这个当我有时间。 让我知道,如果你弄明白了,我也会这样做。

+0

多部分是HTTP请求的东西。 – Raito

相关问题