如何使用 tweepy 和新 API v2 的媒体发布文本?

问题描述 投票:0回答:1

最近,twitter 开发者 API 尚未显示申请提升访问权限的选项。这意味着我只能使用 API v2 的免费版本。现在,我正在尝试发布一条包含一些文本和图像的推文。 create_tweet() 中有一个参数叫做 media_ids,但问题是没有 media_upload() 可供我获取媒体 id。我认为这是由于 API 更改,更具体地说,是由于取消了提升访问权限。我如何才能以路径形式发布文本和图像? 这是我的 Python 代码:

import tweepy
import keys # This is my python script that contains my dev keys.

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,
                       bearer_token=keys.bearer_key)

def tweet(client: tweepy.Client, message: str, media_path=None):
    client.create_tweet(text=message) 
    # How would I upload media ^^^ here from a path in the current directory?
    print("Tweet tweet!")

if __name__ == "__main__":
    my_message = "I love cats and dogs!"
    tweet(client=client, message=my_message, media_path="pets.png")

PS:我正在使用最新版本的tweepy和python3。

我在网上查看了申请 Elevated Access 是否有任何问题,或者这只是我的问题。我找不到足够实质性的东西,所以我来到这里。

python python-3.x tweepy
1个回答
0
投票

我今天早些时候从另一位用户那里找到了这段代码。非常适合我

import tweepy
from tweepy import API

consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""


def get_twitter_conn_v1(api_key, api_secret, access_token, access_token_secret) -> tweepy.API:
    """Get twitter conn 1.1"""

    auth = tweepy.OAuth1UserHandler(api_key, api_secret)
    auth.set_access_token(
        access_token,
        access_token_secret,
    )
    return tweepy.API(auth)

def get_twitter_conn_v2(api_key, api_secret, access_token, access_token_secret) -> tweepy.Client:
    """Get twitter conn 2.0"""

    client = tweepy.Client(
        consumer_key=api_key,
        consumer_secret=api_secret,
        access_token=access_token,
        access_token_secret=access_token_secret,
    )

    return client

client_v1 = get_twitter_conn_v1(consumer_key, consumer_secret, access_token, access_token_secret)
client_v2 = get_twitter_conn_v2(consumer_key, consumer_secret, access_token, access_token_secret)


media_path = "C:\\YourPath"

media = client_v1.media_upload(filename=media_path)
media_id = media.media_id

client_v2.create_tweet(text="This is a test", media_ids=[media_id])
© www.soinside.com 2019 - 2024. All rights reserved.