Gia*_*ynh 9 python twitter tweepy
我正在尝试使用 Twitter API V.2 和 Tweepy 创建我的第一个 Twitter 机器人。所以我可以发布简单的文本推文,但我还没有找到如何使用媒体(图片)发布推文,那么我该怎么做?(我看到有人说“你不能使用 twitter API v2 发布媒体推文...你需要使用 API V 1.1”,所以如果这是真的,我如何使用 Twitter API V1.1 而不是 API V2 ?)
如果你能帮助我的话谢谢你^^
这是我的实际代码:
from io import BytesIO
from PIL import Image
import tweepy
from tweepy import API
consumer_key = "APP_KEY"
consumer_secret = "APP_SECRET_KEY"
access_token = "TOKEN"
access_token_secret = "SECRET_TOKEN"
client = tweepy.Client(
consumer_key=consumer_key,
consumer_secret=consumer_secret,
access_token=access_token,
access_token_secret=access_token_secret
)
response = client.create_tweet(
text="Just a dummy tweet",
# in_reply_to_tweet_id= 1484105392598749186 <--- Reply to a tweet by ID
)
print(f"https://twitter.com/user/status/{response.data['id']}")
Run Code Online (Sandbox Code Playgroud)
ima*_*mak 13
对于 v2 免费版本,tweepy.API (v1.1)没有权限再发送推文(至少在我的情况下),但仍然可以上传媒体并检索 media_id。
tweepy.Client为此,您可以同时使用 v1.1 和 v2 ( )。
代码如下:
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(api_key, api_secret, access_token, access_token_secret)
client_v2 = get_twitter_conn_v2(api_key, api_secret, access_token, access_token_secret)
media_path = "path_to_media"
media = client_v1.media_upload(filename=media_path)
media_id = media.media_id
client_v2.create_tweet(text="Tweet text", media_ids=[media_id])
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
如果您正在管理 Essential 项目,则需要在 Twitter 开发者门户上的项目中申请 Elevated(免费),这是因为 Elevated 项目可以同时使用 v1.1 和 v2(仅限 Essential v2)。
一旦您的提交被接受,您必须验证以允许在您的项目上读取和写入功能(开发人员平台 -> 项目和应用程序 -> YOUR_PROJECT -> 开发 -> 用户身份验证设置),选择“OAuth 1.0a”并选择“读取和写入” ”。
现在,您可以使用以下代码发送媒体推文:
auth = tweepy.OAuth1UserHandler(
consumerKey,
consumerSecret,
accessToken,
accessTokenSecret
)
api = tweepy.API(auth)
media = api.media_upload(filename="./assets/twitter-logo.png")
print("MEDIA: ", media)
tweet = api.update_status(status="Image upload", media_ids=
[media.media_id_string])
print("TWEET: ", tweet)
Run Code Online (Sandbox Code Playgroud)
对于上传媒体,您需要使用函数 media_upload (update_status_with_media 已弃用)。该函数返回一个具有 media_id_string 属性的 Media 对象,这是使用图片制作推文所需的元素。