2017-08-10 110 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

我轉發贈品,推文的數量是巨大的,數據庫也將是巨大的。有些禮物會在一個月左右結束。 –