o método tweepy stream.filter () não funciona corretamente
Pergunta
Eu tenho alguns problemas com a API Tweepy.
Estou apenas tentando escrever um pequeno aplicativo que me dê um fluxo de status de um usuário (mais de minério), mas seria bom começar com ;-)
Agora: meu código é assim:
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')
No StreamwatcherListener, tenho um método "on_status" que imprime o texto de um status, sempre que um novo chega (tudo parece funcionar, quando eu tento stream.sample () em vez de stream.filter ())
O ID dado é o meu TestAccount; portanto, sempre que tweet, devo obter alguma resposta no console ... mas nada acontece.
Quando eu tento
curl -d @following http://stream.twitter.com/1/statuses/filter.json -uAnyTwitterUser:Password
No terminal, como pude encontrar na API do Twitter, tudo funciona bem.
Então, talvez eu faça o uso errado do método filter ()-?
alguma sugestão?
-e
Solução
Eu descobri eu mesmo
a stream.filter()
Método precisa de uma matriz
Então eu tive que codificar
stream.filter(['1234567'])
et voilà
Outras dicas
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)
Aqui usei o parâmetro assíncrono, ele executa cada fluxo em um encadeamento diferente. Consulte isso link Para documentação ou mais detalhes.