Last active
October 30, 2020 07:58
-
-
Save kingslyroche/7610bf440a77c0b8c767de0d99dbda70 to your computer and use it in GitHub Desktop.
python_tweet_stream
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import boto3 | |
import json | |
from datetime import datetime | |
from tweepy.streaming import StreamListener | |
from tweepy import OAuthHandler | |
from tweepy import Stream | |
from urllib3.exceptions import ProtocolError | |
#Variables that contains the user credentials to access Twitter API | |
access_token='' | |
access_token_secret='' | |
consumer_key='' | |
consumer_secret='' | |
class TweetStreamListener(StreamListener): | |
# on success | |
def on_data(self, data): | |
try: | |
kinesis_client.put_record( | |
DeliveryStreamName=stream_name, | |
Record={ | |
'Data': data | |
} | |
) | |
except (AttributeError, Exception) as e: | |
print (e) | |
return True | |
# on failure | |
def on_error(self, status): | |
print(status) | |
stream_name = 'twitter_stream' # fill the name of Kinesis data stream you created | |
if __name__ == '__main__': | |
kinesis_client = boto3.client('firehose', | |
region_name='', # enter the aws region | |
aws_access_key_id='', # fill your AWS access key id | |
aws_secret_access_key='') # fill you aws secret access key | |
# create instance of the tweepy tweet stream listener | |
listener = TweetStreamListener() | |
# set twitter keys/tokens | |
auth = OAuthHandler(consumer_key, consumer_secret) | |
auth.set_access_token(access_token, access_token_secret) | |
# create instance of the tweepy stream | |
stream = Stream(auth, listener) | |
# search twitter for tags or keywords from cli parameters | |
#query = sys.argv[1:] # list of CLI arguments | |
#query_fname = ' '.join(query) # string | |
while True: | |
try: | |
stream.filter(track=['trump']) | |
except ProtocolError: | |
continue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment