2015-11-02 83 views
1

我不確定爲什麼下面的代碼不會返回任何結果。如果我把streamer.statuses.filter(track = 'data'),那麼它輸出推文。但是,如果我使用joinOR,它不起作用,雖然我使用'data'作爲選項之一。最後,如果我使用track=keywords,它不起作用。TwythonStreamer:或不起作用的篩選器

from twython import TwythonStreamer 
from collections import Counter 

tweets = [] 

class TweetStreamer(TwythonStreamer): 
    def on_success(self, data): 
     if 'text' in data: 
      tweets.append(data['text'].encode('utf-8')) 
      print data['text'].encode('utf-8') 
     if len(tweets)>10: 
      self.disconnect() 

    def on_error(self, status_code, data): 
     print status_code 
     self.disconnect() 

CONSUMER_KEY = "..." 
CONSUMER_SECRET = "..." 
ACCESS_TOKEN = "..." 
ACCESS_TOKEN_SECRET = "..." 

streamer = TweetStreamer(CONSUMER_KEY, CONSUMER_SECRET, 
         ACCESS_TOKEN, ACCESS_TOKEN_SECRET) 

keywords = ['data','information'] 
track = " OR ".join(keywords) 

streamer.statuses.filter(track = track) 
+0

Mmh的,我認爲你正在使用Twitter API以不正確的方式。從https://dev.twitter.com/streaming/overview/request-parameters#track:你應該使用「,」來分隔邏輯OR,使用「」來分隔邏輯AND – Salo

+0

@Salo:所以,如果我想要AND,你的意思是這應該工作:keywords = ['data','information'] track =「」.join(keywords) –

+0

@Salo:我檢查了OR:track =「,」。join(關鍵字)。有用。但AND不起作用:track =「」.join(關鍵字) –

回答

0

您必須以正確的方式使用Twitter API。

doc

  • 對於邏輯和獨立與空間:"data information" == " ".join(['data', 'information'])
  • 對於邏輯或單獨用逗號:"data,information" == ",".join(['data', 'information'])