2017-04-26 9 views
1

ライブツイートをストリーミングする簡単なスクリプトを実行しようとしています。 retweetsを除外するいくつかの試みは成功していない。私はまだ私のストリームの中で手動のリトワット(テキスト "RT @")を取得します。 私はlinklinkを含む他の方法を試みました。Twitterのツイートをストリーミングするときにリツイートを無視する

私は私のコードは次のように非常に似て、勉強していたよう:link

は私がリツイートを無視して何ができますか?ここで

は、私のコードの抜粋です:

class StreamListener(tweepy.StreamListener): 

    def on_status(self, status): 
     if (status.retweeted) and ('RT @' not in status.text): 
      return 

    description = status.user.description 
    loc = status.user.location 
    text = status.text 
    coords = status.coordinates 
    geo = status.geo 
    name = status.user.screen_name 
    user_created = status.user.created_at 
    followers = status.user.followers_count 
    id_str = status.id_str 
    created = status.created_at 
    retweets = status.retweet_count 
    bg_color = status.user.profile_background_color 

    # Initialize TextBlob class on text of each tweet 
    # To get sentiment score from each class 
    blob = TextBlob(text) 
    sent = blob.sentiment 
+0

'status'オブジェクトはどのように見えますか? – ninesalt

+1

あなたのロジックはちょっと混乱しているようです - '(status.retweeted)と(' RT @ 'はstatus.textにありません) '単に"公式 "リトウェットを返します。 「公式」と「手動」の両方のリツイートを除外するために '(status.retweeted)または( 'RT @' in status.text)'を使用する必要があるかもしれません – asongtoruin

答えて

0

あなたは何ができるか、あなたのStreamListeneron_statusの内部で呼び出すために別の関数を作成することです。以下の収率

def analyze_status(text): 
    if 'RT' in text[0:3]: 
     print("This status was retweeted!") 
     print(text) 
    else: 
     print("This status was not retweeted!") 
     print(text) 

class MyStreamListener(tweepy.StreamListener): 
    def on_status(self, status): 
     analyze_status(status.text) 
    def on_error(self, status_code): 
     print(status_code) 

myStreamListener = MyStreamListener() 
myStream = tweepy.Stream(auth=twitter_api.auth, listener=myStreamListener) 
myStream.filter(track=['Trump']) 

:ここでは私のために働いたものです

This status was not retweeted! 
@baseballcrank @seanmdav But they won't, cause Trump's name is on it. I can already hear their stupidity, "I hate D… 
This status was retweeted! 
RT @OvenThelllegals: I'm about to end the Trump administration with a single tweet 
This status was retweeted! 
RT @kylegriffin1: FLASHBACK: April 2016 

SAVANNAH GUTHRIE: "Do you believe in raising taxes on the wealthy?" 

TRUMP: "I do. I do. Inc… 

これが最もエレガントな解決策ではありませんが、私はそれはあなたが直面した問題に対処信じています。

+0

これは「公式」リツイートを想定しません必然的に "RT @"で始まる)はリツイートされませんでしたか? – asongtoruin

+0

私は 'StreamListener()'を 'status.retweeted'とそれが決して印刷しないときにのみ印刷する人気のあるトピックで長時間実行させました。 .retweeted属性が意図したとおりに動作していない可能性がありますか? – Brian

+0

hm、これは珍しいようです。ツイッターインターフェースを介して行われたと仮定して、従来の "retweets"と "quotes"の両方でかなり一貫して使われていると思われる 'hasattr(status、 'retweeted_status')'を試すことができます。 – asongtoruin

関連する問題