如何使用tweepy/Python在Twitter上跟踪某人?

如何使用tweepy/Python在Twitter上跟踪某人?,python,python-3.x,tweepy,Python,Python 3.x,Tweepy,我正在尝试使用tweepy创建一个Twitter机器人,它将搜索、喜欢并转发任何包含“retweet to enter”字样的状态更新,我成功了。但是,我也希望脚本遵循创作该作品的人(我创建此脚本是为了尝试赢得比赛,您通常也需要遵循主办比赛的帐户) 我的脚本粘贴在下面。目前,该脚本确实会跟随某人,但不是创建推文的人 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_tok

我正在尝试使用tweepy创建一个Twitter机器人,它将搜索、喜欢并转发任何包含“retweet to enter”字样的状态更新,我成功了。但是,我也希望脚本遵循创作该作品的人(我创建此脚本是为了尝试赢得比赛,您通常也需要遵循主办比赛的帐户)

我的脚本粘贴在下面。目前,该脚本确实会跟随某人,但不是创建推文的人

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)


user2 = api.me()
print(user2.name)

def main():
    search = ("Retweet to enter")
    numberoftweets = 5
    for tweet in tweepy.Cursor(api.search, search).items(numberoftweets):
        try:
            tweet.favorite()
            tweet.retweet()
            api.create_friendship(tweet.user.id)
            print("Tweet Retweeted and followed")
        except tweepy.TweepError as e:
            print(e.reason)
        except StopIteration:
            break
main()

艾伦对这个问题的评论确实是正确的,
api.search
返回转发以及原始推文。目前,对于转发,您的代码将跟随转发帐户。以下是处理此问题的几种方法:

过滤掉转发的内容

虽然您可以获取所有tweet,然后过滤结果,但这将浪费宝贵的API调用。最好根据API请求进行过滤。你可以通过Twitter的。将以下内容添加到搜索字符串将删除所有转发

-filter:retweets
所以你的搜索将会是

search = "Retweet to enter -filter:retweets"

获取原始推文作者

也许你不想过滤掉转发。Twitter返回的回复仍然允许您从转发中获取原始作者。您必须检查tweet是否为转发,如果是,则应具有
retweeted\u status
属性。这包含关于原始推文的信息,包括其作者

if tweet.retweeted:
    api.create_friendship(tweet.retweeted_status.author)
将上述内容添加到代码中应该允许您遵循原始作者


就个人而言,我更喜欢过滤选项,但这取决于你。希望其中一个有帮助

它可能有助于澄清它到底在跟踪谁。它似乎跟踪那些转发了与我相同内容的人。此外,添加tweet.user.follow()也不起作用。对我来说,API似乎既返回原始tweet,也返回转发。我不熟悉这个特定的API,但我建议尝试只过滤原始推文。