如何使用tweepyAPIv2获取状态



我用tweepy和python创建了这个机器人,基本上我可以转发包含某个关键词的最新推文。我想得到一条有该关键词的推特的状态,这样我就知道我是否已经转发了它。

import time
import tweepy
import config
# Search/ Like/ Retweet

def get_client():
client = tweepy.Client(bearer_token=config.BEARER_TOKEN,
consumer_key=config.CONSUMER_KEY,
consumer_secret=config.CONSUMER_SECRET,
access_token=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET, )
return client

def search_tweets(query):
client = get_client()
tweets = client.search_recent_tweets(query=query, max_results=20)
tweet_data = tweets.data
results = []
if tweet_data is not None and len(tweet_data) > 0:
for tweet in tweet_data:
obj = {'id': tweet.id, 'text': tweet.text}
results.append(obj)
else:
return 'There are no tweets with that keyword!'
return results

client = get_client()
tweets = search_tweets('#vinu')
for tweet in tweets:
client.retweet(tweet["id"])
client.like(tweet['id'])
time.sleep(2)

这就是代码。我想创建一个if语句来检查api v2是否已经转发了它,如果已经转发了,则继续循环中的下一项。我知道我可以在api v1中使用api.get_status,但我不知道如何在v2中使用。请帮帮我。

if tweet_data is not None and len(tweet_data) > 0:
for tweet in tweet_data:
status = tweepy.api(client.access_token).get_status(tweet.id)
if status.retweeted:
continue
else:
obj = {'id': tweet.id, 'text': tweet.text}
results.append(obj)
else:
return ''
return results

这应该在v1中有效,请帮助我在v2中做同样的事情。谢谢

对于Tweepy API v2,您可以对每条推文使用get_retweeters()方法,然后将您的用户id与检索到的转发者的id进行比较。

if tweet_data is not None and len(tweet_data) > 0:
for tweet in tweet_data:
status = client.get_retweeters(tweet.id, max_results=3)
for stat in status.data:
if stat.id == YOUR_ID_HERE:
continue
else:
obj = {'id': tweet.id, 'text': tweet.text}
results.append(obj)
else:
return 'There are no tweets with that keyword!'
return results

只要正确管理费率,您可以将max_results更改为您想要的任何限制。如果你得到的结果是None,请尝试将tweet.id更改为一个有转发的静态id,并只测试该id,这是因为许多推文没有任何转发。

你可以在这里找到一个简单的方法来使用你的twitter用户名找到你的twitter id

相关内容

  • 没有找到相关文章

最新更新