如何使用Tweepy API V2发布包含文字和多张图片的推文?
Tweepy V2 发布带多张图片及图片描述的推文方案
实现逻辑
- Tweepy V2 原生 Client 暂未提供媒体上传能力,需要配合 Twitter V1.1 版本的 API 完成图片上传操作
- 图片上传完成后会返回唯一的 media_id,将所有图片的 media_id 组成列表传入 V2 发推接口即可实现带图推文发布
- 图片描述(alt 文本)可在图片上传完成后通过接口单独设置
完整实现代码
import tweepy # 替换为你自己的开发者密钥 ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXX' ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXXX' CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXX' BEARER_TOKEN = 'XXXXXXXXXXXXXXXXXXX' # 初始化V2 Client(你原有代码的部分) api_v2 = tweepy.Client( bearer_token=BEARER_TOKEN, access_token=ACCESS_KEY, access_token_secret=ACCESS_SECRET, consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET ) # 新增:初始化V1.1 API用于图片上传 auth = tweepy.OAuth1UserHandler( consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET, access_token=ACCESS_KEY, access_token_secret=ACCESS_SECRET ) api_v1 = tweepy.API(auth) # 配置要上传的图片路径和对应描述 image_config = [ {"path": "第一张图片本地路径.jpg", "desc": "第一张图片的描述内容"}, {"path": "第二张图片本地路径.jpg", "desc": "第二张图片的描述内容"}, {"path": "第三张图片本地路径.jpg", "desc": "第三张图片的描述内容"} ] media_ids = [] for img in image_config: # 上传图片 media = api_v1.media_upload(filename=img["path"]) # 设置图片描述 api_v1.create_media_metadata(media_id=media.media_id, alt_text=img["desc"]) media_ids.append(str(media.media_id)) # 发布带3张图片的推文 response = api_v2.create_tweet( text="你要发布的推文正文内容", media_ids=media_ids ) # 打印发布结果 print(f"推文发布成功,推文ID:{response.data['id']}")
注意事项
- 单张静态图片大小不能超过5MB,支持JPG、PNG、WEBP格式
- 单条推文最多可上传4张静态图片
- 单张图片的描述最多支持1000字符
- 需确保你的Twitter开发者账号已经申请了读写权限,否则会出现上传或发布失败的问题
内容的提问来源于stack exchange,提问作者JuneXP
相关产品推荐
相关产品推荐

