Advertisement
Guest User

Untitled

a guest
Jan 27th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. import tweepy
  2. import sys
  3. import pymongo
  4. import smtplib
  5. import sys
  6.  
  7. #The following functions send specific error codes to me then end the stream.
  8.  
  9. def email_me_error420():
  10. server = smtplib.SMTP('smtp.gmail.com', 587)
  11. server.starttls()
  12. server.login("xxx@gmail.com", "xxx")
  13.  
  14. msg = "The twitter stream received a 420 error and disconnected! You are being rate limited by Twitter."
  15. server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
  16. server.quit()
  17. sys.exit()
  18.  
  19. def email_me_error500():
  20. server = smtplib.SMTP('smtp.gmail.com', 587)
  21. server.starttls()
  22. server.login("xxx@gmail.com", "xxx")
  23.  
  24. msg = "The twitter stream received a 500 error and disconnected! Someone broke twitter...! Maybe Doomsday?"
  25. server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
  26. server.quit()
  27. sys.exit()
  28.  
  29. def email_me_error502():
  30. server = smtplib.SMTP('smtp.gmail.com', 587)
  31. server.starttls()
  32. server.login("xxx@gmail.com", "xxx")
  33.  
  34. msg = "The twitter stream received a 502 error and disconnected!"
  35. server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
  36. server.quit()
  37. sys.exit()
  38.  
  39. def email_me_error503():
  40. server = smtplib.SMTP('smtp.gmail.com', 587)
  41. server.starttls()
  42. server.login("xxx@gmail.com", "xxx")
  43.  
  44. msg = "The twitter stream received a 503 error and disconnected!"
  45. server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
  46. server.quit()
  47. sys.exit()
  48.  
  49. def email_me_error504():
  50. server = smtplib.SMTP('smtp.gmail.com', 587)
  51. server.starttls()
  52. server.login("xxx@gmail.com", "xxx")
  53.  
  54. msg = "The twitter stream received a 504 error and disconnected!"
  55. server.sendmail("xxx@gmail.com", "xxx@gmail.com", msg)
  56. server.quit()
  57. sys.exit()
  58.  
  59. access_token = "1111-1111"
  60. access_token_secret = "1111"
  61. consumer_key = "1111"
  62. consumer_secret = "1111"
  63.  
  64. #set up authorization and api access
  65.  
  66. auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
  67. auth.set_access_token(access_token, access_token_secret)
  68. api = tweepy.API(auth)
  69.  
  70. #stream listener is below
  71.  
  72. class CustomStreamListener(tweepy.StreamListener):
  73. def __init__(self, api):
  74. self.api = api
  75. super(tweepy.StreamListener, self).__init__()
  76.  
  77. self.db = pymongo.MongoClient().WorldTweetsGeo
  78.  
  79. def on_error(self, status_code):
  80. if status_code == 420:
  81. email_me_error420()
  82. print (status_code)
  83. sys.exit()
  84. return False
  85. elif status_code == 500:
  86. email_me_error500()
  87. print (status_code)
  88. sys.exit()
  89. return False
  90. elif status_code == 502:
  91. email_me_error502()
  92. print (status_code)
  93. sys.exit()
  94. return False
  95. elif status_code == 503:
  96. email_me_error503()
  97. print (status_code)
  98. sys.exit()
  99. return False
  100. elif status_code == 504:
  101. email_me_error504()
  102. print (status_code)
  103. sys.exit()
  104. return False
  105. else:
  106. print (status_code)
  107.  
  108. def on_status(self, status):
  109.  
  110. data ={}
  111.  
  112. data['TweetText'] = status.text
  113. data['Name'] = status.user.name
  114. data['UserDesc'] = status.user.description
  115. data['Coordinates'] = status.geo
  116. data['GeoEnabled'] = status.user.geo_enabled
  117. data['UserLocation'] = status.user.location
  118. data['TweetRetweetCt'] = status.retweet_count
  119. data['TweetFavoriteCt'] = status.favorite_count
  120. data['TweetSource'] = status.source
  121. data['TweetCreated'] = status.created_at
  122. data['UserID'] = status.user.id_str
  123. data['UserScreen'] = status.user.screen_name
  124. data['UserName'] = status.user.name
  125. data['UserFollowerCt'] = status.user.followers_count
  126. data['UserTimezone'] = status.user.time_zone
  127. data['UtcOffset'] = status.user.utc_offset
  128. data['FollowersCount'] = status.user.followers_count
  129. data['FriendsCount'] = status.user.friends_count
  130. data['StatusesCount'] = status.user.statuses_count
  131. data['AccountCreated'] = status.user.created_at
  132. data['Language'] = status.lang
  133. data['PlaceID'] = status.place.country_code
  134. data['InReplytoID'] = status.in_reply_to_user_id_str
  135. data['InReplytoStatusID'] = status.in_reply_to_status_id_str
  136.  
  137. self.db.Tweets.insert(data)
  138.  
  139. location = (111, 111, 111, 111)
  140.  
  141. def launch_twitter_stream():
  142. while True:
  143. try:
  144. sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
  145. sapi.filter(locations=(location))
  146. #sapi.filter(track=["keyword"])
  147. except KeyboardInterrupt:
  148. sys.exit()
  149. except:
  150. continue
  151.  
  152. launch_twitter_stream()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement