2017-08-10 79 views
2

我做了推特推特转发,跟随和取消关注人(当达到最大时),但当我认为我的机器人完全可操作Twitter阻止了我..这是因为如果wansn'检查我的机器人是否已经转发了一条推文,但是我有一个try/except块。所以我正在进行大量的API调用转发......我想知道如何检查我是否已经转发了此推文? 我想查找每个用户都转推推文,如果我的用户名在里面,传递到下一个推文,但它不是很有效。我可以分享我的代码,并随时要求澄清。 谢谢, Kajpio PS:我正在使用tweepy与API交互!Python脚本,推特推特转发特定推文

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

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 
+0

“我可以分享我的代码”请执行 –

+0

如果您使用的是REST API,那么是的,您将会调用大量转推。为什么不看流媒体API(tweepy也可以处理)? – asongtoruin

+0

最新的状态! Aleks Andreev –

回答

0

你可以检查你是否已经通过跟踪推特的id来转发特定的推文。在转推之前,只需在你的id列表(或数据库表)中检查推特的id。如果您推送的推文也是另一条推文的推文,则通过查看retweet_status字段来检查推文的ID。

我不认为你会被多次转发同一条推文而被阻止。一般来说,Twitter不会让你在24小时内不止一次推送同一条推文。 Twitter将返回错误代码187。 (Twitter's error codes。)如果您经常发微博,您可能会被阻止。 Twitter没有为状态更新指定速率限制。如果超出内部速率限制,您将收到403个HTTP状态代码,然后由您决定退出更新,直到您不再收到403代码。

+0

我刚刚更新了我的问题,以便更好地理解我的问题。事实上,我有一个try/catch块,使得我的机器人每次都做一个api请求。我在一个半月内转发了20k条推文。该文件将是巨大的:我想到了这一点,我认为它可以在更小的规模上工作! –

+0

Twitter会让你在24小时后发布同样的推文。因此,该文件只需包含您在过去24小时内发微博的推文。只需在24小时后从文件中删除推文即可。 – Jonas

+0

您的try/catch问题在于,当Twitter向您发送一个错误,要求您停止发送一段时间的推文时,您的代码将忽略该错误并继续发送推文。然后你被阻止。 – Jonas

0

多少鸣叫,我们谈论的吗?你可以使用一个sqlite数据库来存储你已经转发的推文的ID。如果有太多的推文,你可以清理10天前推特推文的数据库或其他内容,假设你在10天后不会找到相同的推文。

+0

我转发赠品,推文的数量是巨大的,数据库也将是巨大的。有些礼物会在一个月左右结束。 –