gpt4 book ai didi

python - Twython - 如何使用媒体 url 更新状态

转载 作者:行者123 更新时间:2023-11-28 18:48:32 25 4
gpt4 key购买 nike

在我的应用程序中,我允许用户在 Twitter 上发帖。现在我想让他们通过媒体更新他们的状态。

twython.py 中,我看到一个方法 update_status_with_media 从文件系统读取图像并上传到 twitter。我的图像不在文件系统中,而是在 S3 存储桶中。

如何使用 S3 存储桶 URL 使其工作?

file_ 变量中传递 url,因 IO 错误而失败,没有这样的文件或目录。

传递 StringIO 失败,出现 UnicodeDecode 错误。

传递 urllib.urlopen(url).read() 给出 file() 参数 1 必须是没有 NULL 字节的编码字符串,而不是 str

我还尝试使用 post 方法并从 twitter api 得到 403 Forbidden,Error creating 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))})

最佳答案

很高兴看到您找到了答案!我们最近在 repo issue 中处理了一个类似的问题 - 基本上,您可以使用 StringIO 执行以下操作,然后像您一样将其直接传递给 twitter.post:

from StringIO import StringIO
from twython import Twython

t = Twython(...)
img = open('img_url').read()
t.post('/statuses/update_with_media', params = {'status': 'Testing New Status'}, files = {
'media': StringIO(img)
# 'media': ('OrThisIfYouWantToNameTheFile.lol', StringIO(img))
})

这不是对您问题的直接回答,所以我不期待任何投票或任何东西,但我认为它对某些人似乎有用并且有些相关,所以我会写个便条。

关于python - Twython - 如何使用媒体 url 更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com