2012-01-21 6 views
1

tweepyを使ってtweetを作成しています。tweepyはそれを検索し、ツイートのテキストに基づいてアクションを実装します。最終的に私はcron経由で数分おきに実行したいと思っています。私はPythonの初心者ですので、私の無知を許してください。twitterボットのforループのPython保存状態

私の問題は重複を防ぐことです。私はループがあり、そのIDが前のツイートよりも大きいかどうかをチェックすることで、ツイートが新しいかどうかをテストします。しかし、私はこの変数を初期化し、ループの最後に変更を保存する方法を試すことはできません。

はここに私の現在の(破線)コードである:

import sys 
import tweepy 

## OAuth keys go here. 

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
api = tweepy.API(auth) 

def ask_bot(): 
    old_id = 0 
    for tweet in api.mentions(): 
     if tweet.id > old_id: 
      print "@%s: %s" % (tweet.author.screen_name, tweet.text) 
      old_id = tweet.id + 1 
     else: 
      pass  

端に所望の行動が前に印刷されていないだけ印刷ツイートにループするためのものです。

答えて

1

私はちょうど印刷されたIDのリストを作成します。次に、印刷しようとしているIDがすでに印刷リストに入っているかどうかを確認するだけです。そうであれば、何もしないでください。そうでない場合は、それを印刷してリストに追加します。言い換えれば

:私はTweepyについて多くを知らないが、これは役立つかもしれ

import sys 
import tweepy 

## OAuth keys go here. 

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
api = tweepy.API(auth) 

printed_ids = [] 

def ask_bot(): 
    old_id = 0 
    for tweet in api.mentions(): 
     if tweet.id not in printed_ids: 
      print "@%s: %s" % (tweet.author.screen_name, tweet.text) 
      printed_ids.append(tweet.id) 
     else: 
      pass  
+0

コード例がいいです。 – elijaheac

+0

@elijaheac、編集を参照してください。 – houbysoft

+0

完全に動作します。私はデータベースのバックグラウンドをさらに持っていますが、Pythonで組み込みのデータ型を使用することに慣れていません。どうもありがとう。 –

2

import sys 
import tweepy 

## OAuth keys go here. 

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
api = tweepy.API(auth) 

seen_ids = [] 

def ask_bot(): 
    global seen_ids 
    for tweet in api.mentions(): 
     if tweet.id not in seen_ids:## Heading ##: 
      print "@%s: %s" % (tweet.author.screen_name, tweet.text) 
      seen_ids.append(tweet) 
     else: 
      pass 

ので、それに向けたすべてのツイートのためのTwitterを検索します、そのIDを以前に見たかどうかをチェックします。私がglobalを使用した理由は、変更がメイン変数のseen_idsに影響するため、関数の内部で作成されたコピーではありません。 幸運!

関連する問題