2017-08-10 6 views
2

retweeting、follow and unfollowing people(最大到達時)のTwitter Botを作ったが、私のbotが完全に動作していると思ったときTwitterは私をブロックした。私のボットが既にツイートをリツイートしているかどうかをチェックしていますが、try/exceptブロックがありました。だから私はretweetするために多くのAPI呼び出しをしていた...私はすでに私はこのツイートをretweetかどうかを確認することができますか? 私はツイートをリツイートしたユーザー全員を調べ、自分のユーザー名が入っていれば、次のツイートに渡すことを考えましたが、あまり効果的ではありません。私は自分のコードを共有することができますし、何かを明確に求めることができます。 ありがとう、 Kajpio PS:私はtweepyを使ってAPIとやり取りしています!Pythonスクリプト、特定のつぶやきをretweetingするtwitter bot

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を追跡して特定のツイートを既にリツイートしているかどうかを確認できます。 retweetする前に、idのリスト(またはデータベーステーブル)に対してツイートのIDをチェックするだけです。あなたがリツイートしているツイートが別のツイートのリツイートである場合は、retweet_statusフィールドを見て、そのツイートのIDを確認します。

同じツイートを複数回リウェットすることでブロックされることはありません。一般的にTwitterでは、24時間以内に同じツイートを2回以上ツイートすることはできません。 Twitterは代わりにエラーコード187を返します。 (Twitter's error codes。)あなたがあまりにも頻繁にツイートするとブロックされている可能性があります。 Twitterはステータス更新のレート制限を指定していません。内部レート制限を超えた場合は、403のHTTPステータスコードが送信され、403コードを受信しなくなるまで、更新内容を元に戻す必要があります。

+0

私はちょうど私の質問の理解のために私の質問を更新しました。私がtry/catchブロックを持っているという事実は、私のボットが毎回apiリクエストを行うようにします。私は1ヶ月半で20kのツイートをリツイートしました。ファイルは巨大です:私はそれを考えました、私はそれがはるかに小さいスケールで動作すると思う! –

+0

Twitterは24時間後に同じツイートをツイートします。だから、このファイルには、あなたが過去24時間以内につぶやいたつぶやきだけが含まれている必要があります。 24時間後にファイルからツイートを削除するだけです。 – Jonas

+0

あなたのtry/catchの問題は、Twitterがtweetingをしばらく停止する必要があるエラーを送信したときに、コードがエラーを無視してtweetingを保持することです。その後、ブロックされます。 – Jonas

0

がどのように多くのつぶやき私たちがここで話している:

アップデートは、ここでは、リツイートをチェックする部分だけ私のコードの一部ですか?既にretweetしたツイートのIDを格納するためにsqlite dbを使用することができます。つぶやきが多すぎる場合は、10日後に同じツイートが見つからないと仮定して、10日以上前にリツイートしたツイートIDのDBを整理できますか?

+0

私はギフトをリツイートします。つぶやきの数が膨大で、データベースも膨大になります。いくつかの賞品は1ヶ月後に終了します.. –

関連する問題