如何使用Tweepy与Twitter API v2免费版发布带图片的推文?
解决免费版Twitter API v2上传图片发推文的问题
免费版API v2本身没有媒体上传端点,得借助v1.1的/media/upload接口,Tweepy里对应的是API类的media_upload()方法,免费权限支持这个操作,不需要Elevated Access。
修改你的代码如下:
import tweepy import keys # 初始化v2的Client(用于发推文) client = tweepy.Client( consumer_key=keys.api_key, consumer_secret=keys.api_secret, access_token=keys.access_token, access_token_secret=keys.access_token_secret ) # 初始化v1.1的API(用于上传媒体) auth = tweepy.OAuth1UserHandler( keys.api_key, keys.api_secret, keys.access_token, keys.access_token_secret ) api = tweepy.API(auth) def tweet(client: tweepy.Client, api: tweepy.API, message: str, media_path=None): media_ids = [] if media_path: # 上传图片获取media_id media = api.media_upload(filename=media_path) media_ids.append(media.media_id_string) # 带媒体ID发推文 client.create_tweet(text=message, media_ids=media_ids) print("Tweet tweet!") if __name__ == "__main__": my_message = "I love cats and dogs!" tweet(client=client, api=api, message=my_message, media_path="pets.png")
关键说明
- 必须同时初始化
Client(v2)和API(v1.1):前者负责创建推文,后者负责上传媒体。 media_upload()返回的media_id_string要以列表格式传给create_tweet的media_ids参数。- 确保图片是Twitter支持的格式(JPG、PNG、GIF等),单图大小不超过免费版5MB的限制。
内容的提问来源于stack exchange,提问作者Oimeow
相关产品推荐
相关产品推荐

