Укажите количество твитов во время потоковой передачи - PullRequest
0 голосов
/ 31 января 2019

Я хочу добавить функцию для указания количества твитов.Я хочу получить его на основе hash_tag_list, а не получить эффект пожарного шланга.Я попытался добавить цикл for в функцию on_data, но это не сработало;какие-либо предложения?

class TwitterAuthenticator():

    def authenticate_twitter_app(self):
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
        return auth

 # # # # TWITTER STREAMER # # # #
class TwitterStreamer():
"""
Class for streaming and processing live tweets.
"""
    def __init__(self):
        self.twitter_autenticator = TwitterAuthenticator()    

    def stream_tweets(self, fetched_tweets_filename, hash_tag_list):
        # This handles Twitter authetification and the connection to Twitter Streaming API

        listener = TwitterListener(fetched_tweets_filename)
        auth = self.twitter_autenticator.authenticate_twitter_app() 
        stream = Stream(auth, listener)

        # This line filter Twitter Streams to capture data by the keywords: 

        stream.filter(track=hash_tag_list)



# # # # TWITTER STREAM LISTENER # # # #
class TwitterListener(StreamListener):
"""
This is a basic listener that just prints received tweets to stdout.
"""
    def __init__(self, fetched_tweets_filename ):
        self.fetched_tweets_filename = fetched_tweets_filename


    def on_data(self, data):
        try:
           print(data)
           with open(self.fetched_tweets_filename, 'a') as tf:
               tf.write(data)
           return True
        except BaseException as e:
            print("Error on_data %s" % str(e))
        return True

    def on_error(self, status):
        if status == 420:
            # Returning False on_data method in case rate limit     occurs.
            return False
        print(status)   
...