如何在Python Twitter Tools lib中使用status / update_with_media?

时间:2014-05-09 20:50:50

标签: python image api twitter

我想通过使用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

1 个答案:

答案 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     }   },

有空的时候我会回到这里。 如果你搞清楚我会告诉我,我也会这样做。