使用 tweepy 发送多种媒体

Posted

技术标签:

【中文标题】使用 tweepy 发送多种媒体【英文标题】:Sending multiple medias with tweepy 【发布时间】:2017-09-15 08:45:01 【问题描述】:

我正在尝试用 tweepy 制作一个 Twitter 机器人。这实际上是我的第一个 twitter BOT,我对它有点陌生。

我有一个媒体列表,其中包含我需要发送的每个图像的路径。 我可以发送带有文本的推文

api.update_status(status="some text")

或使用一种媒体发送推文

api.update_with_media(filename, status="some text with media")

但我需要在推文中发送很多图片。 我听说我需要先上传我的文件,但我不知道如何将它们集成到推文中。 或者也许还有另一种方法?

【问题讨论】:

【参考方案1】:

如果您想上传多张图片,可以通过 Tweepy 的 api.media_upload() 方法使用 Twitter API 的 media/upload

此方法返回一个包含media_id 的响应对象,您可以将多个media_ids 附加到api.update_status()

所以你可能想写的代码是这样的:

# Upload images and get media_ids
filenames = ['1.png', '2.png', ...]
media_ids = []
for filename in filenames:
     res = api.media_upload(filename)
     media_ids.append(res.media_id)

# Tweet with multiple images
api.update_status(status='many images!✨', media_ids=media_ids)

【讨论】:

非常感谢您的回答!我实际上使用的是非常简单易用的引号。不过我可能会帮助很多人。 media_ids = [api.media_upload(f).media_id_string for f in filenames] 这个解决方案提示如下错误:update_status_with_media() missing 1 required positional argument: 'filename' Any idea ? @bog 你好。根据文档 (docs.tweepy.org/en/stable/…),update_status_with_media() 似乎有不同的参数。它已被弃用,所以也许你想考虑使用 media_update()update_status() @shuuji3 谢谢,这对我有用:msg = "Test with 2 img" pics = ("ninja.jpg", "ninja2.jpg") media_ids = [api.media_upload(i).media_id_string for i in pics] api.update_status(status=msg, media_ids=media_ids)

以上是关于使用 tweepy 发送多种媒体的主要内容,如果未能解决你的问题,请参考以下文章

Tweepy [ Twitter API v2 ] 无法上传照片/媒体 [重复]

从 twitter 流中排除回复 - tweepy

Python API:使用没有文件的媒体发推文

Tweepy:现在可以使用 Twitter 搜索 API 获取旧推文?

如何检查 Tweeter 用户是不是可以使用 tweepy 获取直接消息?

Flask Socket-IO 服务器客户端不通信(使用 tweepy 和 twilio)