Problem solved, VOIR UNE SOLUTION À LA FIN DU POSTEDurée Estimation pour flux Twitter avec filtre Emplacement dans Tweepy
Je besoin d'aide pour estimer le temps en cours d'exécution pour mon programme tweepy appelant Twitter API flux avec filtre emplacement. Après le coup d'envoi, il a fonctionné pendant plus de 20 minutes, ce qui est plus long que ce à quoi je m'attendais. Je suis nouveau sur Twitter Stream API, et j'ai seulement travaillé avec l'API REST pendant quelques jours. Il me semble que l'API REST va me donner 50 tweets en quelques secondes, facile. Mais cette requête Stream prend beaucoup plus de temps. Mon programme n'est pas mort sur moi ou donné aucune erreur. Donc je ne sais pas s'il y a quelque chose qui ne va pas. Si oui, veuillez le signaler. En conclusion, si vous pensez que mon code est correct, pourriez-vous fournir une estimation du temps de fonctionnement? Si vous pensez que mon code est faux, pourriez-vous m'aider à le réparer?
Merci d'avance!
Voici le code:
# Import Tweepy, sys, sleep, credentials.py
import tweepy, sys
from time import sleep
from credentials import *
# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
box = [-86.33,41.63,-86.20,41.74]
class CustomStreamListener(tweepy.StreamListener):
def on_error(self, status_code):
print >> sys.stderr, 'Encountered error with status code:', status_code
return True # Don't kill the stream
def on_timeout(self):
print >> sys.stderr, 'Timeout...'
return True # Don't kill the stream
stream = tweepy.streaming.Stream(auth, CustomStreamListener()).filter(locations=box).items(50)
stream
J'ai essayé la méthode de http://docs.tweepy.org/en/v3.4.0/auth_tutorial.html#auth-tutorial Apparemment, il ne fonctionne pas pour moi ... Voici mon code ci-dessous. Pourriez-vous donner votre avis? Faites-moi savoir si vous avez un code de travail. Merci!
# Import Tweepy, sys, sleep, credentials.py
import tweepy, sys
from time import sleep
from credentials import *
# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Assign coordinates to the variable
box = [-74.0,40.73,-73.0,41.73]
import tweepy
#override tweepy.StreamListener to add logic to on_status
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
def on_error(self, status_code):
if status_code == 420:
#returning False in on_data disconnects the stream
return False
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener())
myStream.filter(track=['python'], locations=(box), async=True)
Voici le message d'erreur:
Traceback (most recent call last):
File "test.py", line 26, in <module>
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener())
TypeError: 'MyStreamListener' object is not callable
Problem solved! VOIR LA SOLUTION CI-DESSOUS
Après une autre série de débogage, voici la solution pour celui qui peut avoir un intérêt dans le même sujet:
# Import Tweepy, sys, sleep, credentials.py
try:
import json
except ImportError:
import simplejson as json
import tweepy, sys
from time import sleep
from credentials import *
# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Assign coordinates to the variable
box = [-74.0,40.73,-73.0,41.73]
import tweepy
#override tweepy.StreamListener to add logic to on_status
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text.encode('utf-8'))
def on_error(self, status_code):
if status_code == 420:
#returning False in on_data disconnects the stream
return False
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(api.auth, listener=myStreamListener)
myStream.filter(track=['NYC'], locations=(box), async=True)
Nice, @Withnail, je vais jeter un oeil à votre réponse plus tard et regarder dans toutes les bons détails. Merci d'avance pour votre temps et votre attention! J'ai l'intuition que ce sera une bonne conversation et une opportunité d'apprentissage pour moi. Excité. – Counter10000
J'ai essayé la méthode que vous avez mentionnée sur http://docs.tweepy.org/en/v3.4.0/auth_tutorial.html#auth-tutorial Apparemment, ça ne marche pas pour moi ... Mon code de test est ajouté à mon post ci-dessus . Pourriez-vous donner votre avis? Faites-moi savoir si vous avez un code de travail. Merci! – Counter10000
Voir la réponse révisée! – Withnail