2012-06-10 10 views
6

Actualmente estoy teniendo problemas para obtener código de ejemplo para usar tweepy para acceder a la API de transmisión de Twitter para que se ejecute correctamente (err ... o al menos cómo espero que se ejecute). Estoy usando un clon reciente de tweepy de GitHub (etiquetado versión 1.9) y Python 2.7.1.Uso de tweepy para acceder a la API de transmisión de Twitter

he tratado código de ejemplo de tres fuentes, en cada caso, el uso de "Twitter" como un término de prueba para el seguimiento:

  1. O'Rilley Respuestas código: el blog How to Capture Tweets in Real-time with Twitter's Streaming API

  2. Andrew Robinson : Using Tweepy to access the Twitter Stream

  3. ejemplos Tweepy repositorio en GitHub (que, como Andrew Robinson ha hecho, se puede modificar fácilmente para permitir la autenticación OAuth): streamwatcher.py

En los tres casos, obtengo el mismo resultado: la autenticación es exitosa, no se producen errores y el ciclo principal del programa parece ejecutarse sin problemas. Veo que el uso de la red aumenta a unos 200 KB/s, y el proceso de python salta a casi el 100% de uso de la CPU, por lo que creo que se están recibiendo datos. Sin embargo, nada se envía a la consola.

Sospecho que la clase Stream de tweepy no llama al método de devolución de llamada personalizada por algún motivo. He intentado reescribir los métodos de devolución de llamada en cada ejemplo para producir la salida cada vez que se llaman a, lo que parece confirmar esto. Este es un bit muy simple de código de prueba basados ​​en el blog de Andrew Robinson (con llaves de mi aplicación eliminada, por supuesto):

# -*- 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) 

¿Qué estoy haciendo mal?

Respuesta

10

me encontré con esto también y se fijaron en mi salida local mediante el cambio de la línea 160 en streaming.py a

if delimited_string.strip().isdigit(): 

Esto parece ser un problema/error conocido en Tweepy - debería haber comprobado los problemas lista antes de hacer todo lo que la depuración :) -

https://github.com/tweepy/tweepy/pull/173 https://github.com/tweepy/tweepy/pull/182

+0

Gracias !!! Trabajado como un encanto. Además, gracias por la sugerencia de consultar la lista de problemas en GitHub, eso es probablemente lo que realmente necesitaba saber ;-) –

Cuestiones relacionadas