Attualmente sto riscontrando problemi nell'ottenere codice di esempio per l'utilizzo di tweepy per accedere all'API di streaming di Twitter per funzionare correttamente (err ... o almeno come mi aspetto che funzioni). Sto usando un recente clone di tweepy da GitHub (etichettato versione 1.9) e Python 2.7.1.Utilizzo di tweepy per accedere all'API di streaming di Twitter
ho provato codice di esempio da tre fonti, in ogni caso l'utilizzo di "Twitter" come termine di prova per il monitoraggio:
O'Rilley Risposte Codice: blog How to Capture Tweets in Real-time with Twitter's Streaming API
Andrew Robinson : Using Tweepy to access the Twitter Stream
Tweepy repository su GitHub esempi (che, come ha fatto Andrew Robinson, può essere facilmente modificato per supportare l'autenticazione OAuth): streamwatcher.py
In tutti e tre i casi si ottiene lo stesso risultato: l'autenticazione ha esito positivo, non vengono prodotti errori e il ciclo del programma principale sembra essere in esecuzione senza problemi. Vedo l'utilizzo della rete passare a circa 200 KB/s, e il processo Python salta a quasi il 100% di utilizzo della CPU, quindi penso che i dati vengano ricevuti. Tuttavia, non viene emesso nulla sulla console.
Sospetto che la classe Stream di tweepy non stia chiamando il metodo di callback personalizzato per qualche motivo. Ho provato a riscrivere i metodi di callback in ogni esempio per produrre l'output ogni volta che vengono chiamati, il che sembra confermarlo. Questo è uno molto semplice po 'di codice di prova sulla base di blog di Andrew Robinson (con le chiavi della mia app rimosso, ovviamente):
# -*- coding: utf-8 -*-
import tweepy
consumer_key = ''
consumer_secret = ''
access_token_key = ''
access_token_secret = ''
auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)
class StreamListener(tweepy.StreamListener):
def on_status(self, tweet):
print 'Ran on_status'
def on_error(self, status_code):
print 'Error: ' + repr(status_code)
return False
def on_data(self, data):
print 'Ok, this is actually running'
l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l)
#setTerms = ['hello', 'goodbye', 'goodnight', 'good morning']
setTerms = ['twitter']
streamer.filter(track = setTerms)
Che cosa sto facendo di sbagliato?
Grazie !!! Ha funzionato come un fascino. Inoltre, grazie per il suggerimento di controllare la lista dei problemi su GitHub - probabilmente è quello che dovevo assolutamente sapere ;-) –