使用 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 ] 无法上传照片/媒体 [重复]
Tweepy:现在可以使用 Twitter 搜索 API 获取旧推文?