Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tweepy
- import sys
- import pymongo
- import smtplib
- import sys
- #The following functions send specific error codes to me then end the stream.
- def email_me_error420():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("xxx@gmail.com", "xxx")
- msg = "The twitter stream received a 420 error and disconnected! You are being rate limited by Twitter."
- server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
- server.quit()
- sys.exit()
- def email_me_error500():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("xxx@gmail.com", "xxx")
- msg = "The twitter stream received a 500 error and disconnected! Someone broke twitter...! Maybe Doomsday?"
- server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
- server.quit()
- sys.exit()
- def email_me_error502():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("xxx@gmail.com", "xxx")
- msg = "The twitter stream received a 502 error and disconnected!"
- server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
- server.quit()
- sys.exit()
- def email_me_error503():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("xxx@gmail.com", "xxx")
- msg = "The twitter stream received a 503 error and disconnected!"
- server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
- server.quit()
- sys.exit()
- def email_me_error504():
- server = smtplib.SMTP('smtp.gmail.com', 587)
- server.starttls()
- server.login("xxx@gmail.com", "xxx")
- msg = "The twitter stream received a 504 error and disconnected!"
- server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
- server.quit()
- sys.exit()
- access_token = "1111-1111"
- access_token_secret = "1111"
- consumer_key = "1111"
- consumer_secret = "1111"
- #set up authorization and api access
- auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
- auth.set_access_token(access_token, access_token_secret)
- api = tweepy.API(auth)
- #stream listener is below
- class CustomStreamListener(tweepy.StreamListener):
- def __init__(self, api):
- self.api = api
- super(tweepy.StreamListener, self).__init__()
- self.db = pymongo.MongoClient().WorldTweetsGeo
- def on_error(self, status_code):
- if status_code == 420:
- email_me_error420()
- print (status_code)
- sys.exit()
- return False
- elif status_code == 500:
- email_me_error500()
- print (status_code)
- sys.exit()
- return False
- elif status_code == 502:
- email_me_error502()
- print (status_code)
- sys.exit()
- return False
- elif status_code == 503:
- email_me_error503()
- print (status_code)
- sys.exit()
- return False
- elif status_code == 504:
- email_me_error504()
- print (status_code)
- sys.exit()
- return False
- else:
- print (status_code)
- def on_status(self, status):
- data ={}
- data['TweetText'] = status.text
- data['Name'] = status.user.name
- data['UserDesc'] = status.user.description
- data['Coordinates'] = status.geo
- data['GeoEnabled'] = status.user.geo_enabled
- data['UserLocation'] = status.user.location
- data['TweetRetweetCt'] = status.retweet_count
- data['TweetFavoriteCt'] = status.favorite_count
- data['TweetSource'] = status.source
- data['TweetCreated'] = status.created_at
- data['UserID'] = status.user.id_str
- data['UserScreen'] = status.user.screen_name
- data['UserName'] = status.user.name
- data['UserFollowerCt'] = status.user.followers_count
- data['UserTimezone'] = status.user.time_zone
- data['UtcOffset'] = status.user.utc_offset
- data['FollowersCount'] = status.user.followers_count
- data['FriendsCount'] = status.user.friends_count
- data['StatusesCount'] = status.user.statuses_count
- data['AccountCreated'] = status.user.created_at
- data['Language'] = status.lang
- data['PlaceID'] = status.place.country_code
- data['InReplytoID'] = status.in_reply_to_user_id_str
- data['InReplytoStatusID'] = status.in_reply_to_status_id_str
- self.db.Tweets.insert(data)
- location = (111, 111, 111, 111)
- def launch_twitter_stream():
- while True:
- try:
- sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
- sapi.filter(locations=(location))
- #sapi.filter(track=["keyword"])
- except KeyboardInterrupt:
- sys.exit()
- except:
- continue
- launch_twitter_stream()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement