【发布时间】:2013-05-07 06:55:22
【问题描述】:
在我的应用中,我让用户在 Twitter 上发帖。现在我想让他们通过媒体更新他们的状态。
在twython.py 我看到一个方法update_status_with_media 从文件系统读取图像并上传到推特。我的图像不在文件系统中,而是在 S3 存储桶中。
如何使用 S3 存储桶网址进行这项工作?
在 file_ 变量中传递 url,因 IO 错误而失败,没有这样的文件或目录。
由于 UnicodeDecode 错误,传递 StringIO 失败。
传递urllib.urlopen(url).read() 得到file() argument 1 must be encoded string without NULL bytes, not str。
我也尝试使用post 方法并从 twitter api 得到 403 Forbidden, Error creation status。
刚刚解决了
呸,终于开始工作了!也许它会帮助其他人节省我花费的几个小时。
twitter = Twython(
app_key=settings.TWITTER_CONSUMER_KEY, app_secret=settings.TWITTER_CONSUMER_SECRET,
oauth_token=token.token, oauth_token_secret=token.secret
)
img = requests.get(url=image_obj.url).content
tweet = twitter.post('statuses/update_with_media',
params={'status': msg},
files={'media': (image_obj.url,
BytesIO(img))})
【问题讨论】: