2010-04-15 3 views
1

У меня есть некоторые проблемы с tweepy api.Метод tweepy stream.filter() не работает должным образом

Я просто пытаюсь написать небольшое приложение, которое получает мне поток статусов одного пользователя (рудного более), но можно было бы хорошо, чтобы начать с ;-)

сейчас: мой код как что:

def main(): 
     config = ConfigParser.ConfigParser() 
     config.read('twitter.cfg') 

     username = config.get('Twitter', 'username') 
     password = config.get('Twitter', 'password') 
      listener = StreamWatcherListener() 

     stream = tweepy.Stream(username, password, listener, timeout=None) 
     stream.filter('132897940') 

в StreamWatcherListener у меня есть метод «on_status», который печатает текст статуса, когда новый один приходит (все, кажется, работает, когда я пытаюсь stream.sample() вместо stream.filter())

данный идентификатор является моим тестовым счетом, поэтому всякий раз, когда я чирикаю, я должен получить некоторый ответ в консоли .... но ничего не происходит.

при попытке

curl -d @following http://stream.twitter.com/1/statuses/filter.json -uAnyTwitterUser:Password 

в терминале, как я мог бы найти в твиттере API, все работает отлично.

Так что, возможно, я неправильно использую фильтр() - метод?

любые предложения?

-andy

ответ

7

Я нашел это сам

метод stream.filter() необходим массив

так я должен был кодировать

stream.filter(['1234567']) 

вуаля

0
class TweetListener(StreamListener): 
    def on_status(self,status):   
     print "TWEET ARRIVED!!!" 
     print "Tweet Text : %s" % status.text 
     print "Author's name : %s" % status.author.screen_name 
     print "Time of creation : %s" % status.created_at 
     print "Source of Tweet : %s" % status.source  
     time.sleep(10)  
     return True 

    def on_error(self, status):   
     print status 
     if status == 420: 
      print "Too soon reconnected, Exiting!!" 
      return False 
     sys.exit() 

def search_tweets(): 
    twitterStream = Stream(connect().auth, TweetListener())   
    twitterStream.filter(track=['Cricket','Maths','Army','Sports'],languages = ["en"],async=True) 

Здесь я использовал параметр async, он запускает каждый поток в другом потоке. См. Это link для документации или более подробной информации.

Смежные вопросы