gpt4 book ai didi

twitter - Sinatra、Twitter 和 StringIO

转载 作者:行者123 更新时间:2023-12-02 01:03:56 27 4
gpt4 key购买 nike

Twitter API 允许您通过其 update_with_tweet 方法将媒体添加到您的推文中。

我正在使用 Sinatra 并设置了我的 Twitter 配置。我能够使用我的应用程序成功发布推文。

我的应用读取网页,从该网页提取照片,然后将它们单独发布到 Twitter。我使用 Nokogiri 成功地从页面中提取了照片。

但是,我无法将这些照片转换为 Twitter 允许的媒体类型。因为我也在使用 uri gem,给出这个例子:photo_url = "placekitten.com/300/300",我可以调用 media = open (photo_url) 并返回一个 StringIO

但是,当我尝试将新存储的媒体与我的帖子一起发布到 Twitter 时,我得到了一个错误,即 媒体的 IO 对象必须响应 to_io (Twitter::Error:: Not Acceptable IO)

我正在尝试弄清楚如何正确格式化/调用图像,以便我可以成功地将它发布到 Twitter。

最佳答案

我遇到了同样的问题,但使用的是 Rails。

问题在于图片大小:如果图片大小小于 10kb,则 open(photo_url) 将为您提供 StringIO 对象,如果大小大于 10kb,则- File 对象,保存在 tmp/ 文件夹中。 File 对象响应 to_io 方法而 StringIO 对象不响应。

您可以做什么 - 从您的文件在 tmp 文件夹中创建文件,然后使用此文件发布到 TW。例如:

  img = open(url)
if img.is_a?(StringIO)
ext = File.extname(url)
name = File.basename(url, ext)
Tempfile.new([name, ext])
else
img
end

关于twitter - Sinatra、Twitter 和 StringIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033848/

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