Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本,用于转发特定推文的twitter bot_Python_Api_Twitter_Bots_Tweepy - Fatal编程技术网

Python脚本,用于转发特定推文的twitter bot

Python脚本,用于转发特定推文的twitter bot,python,api,twitter,bots,tweepy,Python,Api,Twitter,Bots,Tweepy,我制作了一个Twitter机器人,用于转发、跟踪和取消跟踪用户(当max到达时),但当我认为我的机器人完全可以运行时,Twitter阻止了我。。这是因为如果我不想检查我的机器人是否已经转发了一条tweet,但我有一个try/except块。所以我做了很多api调用来转发。。。我想知道我怎样才能检查我是否已经转发了这条推文? 我想查找所有转发推文的用户,如果其中有我的用户名,则将其传递到下一条推文,但效果不是很好。我可以分享我的代码,并随时要求任何澄清。 非常感谢。 卡杰皮奥 PS:我正在使用tw

我制作了一个Twitter机器人,用于转发、跟踪和取消跟踪用户(当max到达时),但当我认为我的机器人完全可以运行时,Twitter阻止了我。。这是因为如果我不想检查我的机器人是否已经转发了一条tweet,但我有一个try/except块。所以我做了很多api调用来转发。。。我想知道我怎样才能检查我是否已经转发了这条推文? 我想查找所有转发推文的用户,如果其中有我的用户名,则将其传递到下一条推文,但效果不是很好。我可以分享我的代码,并随时要求任何澄清。 非常感谢。 卡杰皮奥 PS:我正在使用tweepy与API交互

更新,这是我代码的一部分,只是检查转发的部分:

loginToTwitter()
query = 'a string'  
tweet_cursor= tweepy.Cursor(api.search, query, result_type="recent").items()
print("Searching")
for tweet in tweet_cursor:
    tweetText = tweet.text.lower()
    if "rt" in tweetText:
        if tweet.retweeted == True: #It return me each time a false boolean but then I get the api.code 327 from twitter 
            print("already retweeted")
            continue
        try:
            api.retweet(tweet.id)
            print('Retweedted')
            time.sleep(2)
        except tweepy.TweepError as e:
            if e.api_code == 327:
                print("Tried but tweet already Retweeted" )
            print(e)
            time.sleep(0.5)
            continue

我们在这里讨论了多少条推特?您可以使用sqlite数据库来存储您已经转发的tweet的ID。如果tweet太多,你可以清除10天前转发的tweet id的db或其他内容,假设10天后找不到相同的tweet?

你可以通过跟踪tweet的id来检查是否已经转发了特定的tweet。在转发之前,只需对照列表检查tweet的id(或数据库表)的id。如果您转发的tweet也是另一条tweet的转发,您可以通过查看
retweet\u status
字段来检查该tweet的id


我认为你不会因为多次转发同一条推文而被阻止。一般来说,Twitter不会让你在24小时内多次转发同一条推文。Twitter将返回错误代码187。()如果推特太频繁,您可能会被阻止。推特没有为状态更新指定速率限制。如果您确实超过了其内部速率限制,您将收到403 HTTP状态代码,然后由您自行退出更新,直到您不再收到403代码。

“我可以共享我的代码”请这样做如果你正在使用REST API,那么是的,你将调用很多转发。为什么不看看流式API(tweepy也可以处理)?更新状态!AleksAndreev@asongtoruin你能解释一下我如何在我的机器人上使用流媒体API吗?就我对研究的理解而言,这就像是对twitter服务器的开放式请求。我刚刚更新了我的问题,以便更好地理解我的问题。事实上,我有一个try/catch块,这使得我的机器人每次都会执行API请求。我在一个半月内转发了2万条推文。该文件将非常庞大:p我想到了这一点,我认为它可以在更小的范围内工作!推特将允许您在24小时后发送相同的推文。因此,该文件只需要包含您在过去24小时内发送的推文。只需在24小时后从文件中删除推文即可。问题是:try/catch是指当Twitter向您发送一个错误,要求您停止推特一段时间时,您的代码会忽略该错误并继续推特。然后您会被阻止。但我只想转发一条推特。是否有API调用来检查我或某个特定用户(我会写我的用户名)转发一条推文?我在24小时内都不明白这一点,如果我转发一条推文,他将永远被转发,或者直到用户删除它。不,没有API调用来检查是否有人转发了一条推文。我转发赠品,推文的数量是巨大的,数据库也将是巨大的。一些赠品将在一个月左右结束。。