You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Twitter API V1和V2端点发布图文推文失败求助

解决Tweepy使用V2发布带图片推文时的"无效媒体ID"错误

问题根源分析

你的代码存在几个关键问题导致media_ids无效:

  • 路径转义错误:Windows路径中的反斜杠\是转义字符,直接写"C:\wex\pic.jpg"会让\w被解析为特殊字符,导致程序无法正确找到图片文件,媒体上传失败后返回无效ID。
  • 冗余的媒体上传操作:代码中重复调用api.media_upload,不仅浪费资源,还容易混淆有效媒体ID的来源。
  • 潜在的媒体处理未完成问题:部分情况下媒体上传后需要短暂等待处理完成,直接发布可能导致ID未生效。

修正后的代码

def Tweet(self, date: str):
    consumer_key = 'xxxxxxxxxxxxxxxxxx'
    consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    
    # 初始化Twitter API V2客户端
    client = tweepy.Client(
        bearer_token='xxxxxxxxxxxxxxxxxxxxx',
        consumer_key=consumer_key,
        consumer_secret=consumer_secret,
        access_token=access_token,
        access_token_secret=access_token_secret
    )
    
    # 初始化V1 API实例,用于媒体上传
    auth = tweepy.OAuth1UserHandler(
        consumer_key, consumer_secret, access_token, access_token_secret
    )
    api = tweepy.API(auth)
    
    # 使用原始字符串定义路径,避免转义字符解析错误
    image_path = r"C:\wex\pic.jpg" 
    
    # 单次上传媒体,获取有效媒体ID
    media = api.media_upload(filename=image_path)
    media_id = media.media_id_string  # 或使用media.media_id(整数类型)
    
    # 可选:等待媒体处理完成(针对大文件或GIF/视频)
    # import time
    # while True:
    #     status = api.get_media_upload_status(media.media_id)
    #     if status.processing_info['state'] == 'succeeded':
    #         break
    #     elif status.processing_info['state'] == 'failed':
    #         raise Exception("媒体上传失败")
    #     time.sleep(1)
    
    # 发布带媒体的推文
    response = client.create_tweet(text="This Tweet IS A TEST SORRY!", media_ids=[media_id])
    
    log.info(f"发布成功!推文ID: {response.data['id']}")

额外注意事项

  • 确认图片文件存在,且格式符合Twitter要求(支持JPG、PNG、GIF等,单图大小不超过5MB)。
  • 若上传GIF或视频,需在media_upload时指定media_category参数,例如api.media_upload(filename=image_path, media_category="tweet_gif")。
  • 确保你的API密钥拥有write权限,且已完成Twitter开发者平台的权限申请。

内容的提问来源于stack exchange,提问作者Papafortmigas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:12:48