Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. import tweepy
  2. import random
  3. from collections import defaultdict
  4.  
  5.  
  6. class MyStreamListener(tweepy.StreamListener):
  7.  
  8. def __init__(self):
  9. super(MyStreamListener, self).__init__()
  10. self.counter = 0
  11. self.limit = 150
  12. self.tweets = list()
  13. self.tags_counts = defaultdict(lambda: 0)
  14.  
  15. def on_status(self, tweet):
  16. if len(tweet.entities['hashtags']) > 0:
  17. self.counter += 1
  18. # todo: confirm the second condition
  19. if self.counter <= self.limit or random.random() > self.limit / self.counter:
  20. for tags in tweet.entities['hashtags']:
  21. tag = tags['text']
  22. self.tags_counts[tag] += 1
  23. if self.counter > self.limit:
  24. tweet_index_to_remove = random.randint(0, self.limit - 1)
  25. tweet_to_remove = self.tweets[tweet_index_to_remove]
  26. for tags in tweet_to_remove.entities['hashtags']:
  27. tag = tags['text']
  28. self.tags_counts[tag] -= 1
  29. if self.tags_counts[tag] == 0:
  30. del self.tags_counts[tag]
  31. self.tweets[tweet_index_to_remove] = tweet
  32. else:
  33. self.tweets.append(tweet)
  34. print("The number of tweets with tags from the beginning: " + str(self.counter))
  35. list_of_key_values = sorted(self.tags_counts.items(), key=lambda a: (-a[1], a[0]))
  36. print_list = list_of_key_values[0:5]
  37. for k, v in list_of_key_values[5:]:
  38. if v == print_list[-1][1]:
  39. print_list.append((k, v))
  40. else:
  41. break
  42. for k, v in print_list:
  43. print("%s : %s"%(k,str(v)))
  44. print("")
  45.  
  46. def on_error(self, status_code):
  47. if status_code == 420:
  48. # returning False in on_error disconnects the stream
  49. return False
  50.  
  51.  
  52. if __name__ == '__main__':
  53. api_key = '7lxnA7IDNPvATjDZ0s6Ti5NbV'
  54. api_key_secret = 'M8LLuPz1EaFihcas3VIJWS3sfdtYB41zfKEp82tXpEKkCLwBbT'
  55. access_token = '1298166660-kLq9VbZePSnpjkU2tCmUsSTE3Xw0OINb8rSx9w8'
  56. access_token_secret = 'K8AGxIE4MLzr4JJIBkCI2EnZ3kyrHuyJep5e6yVaT6F6n'
  57. auth = tweepy.OAuthHandler(api_key, api_key_secret)
  58. auth.set_access_token(access_token, access_token_secret)
  59. api = tweepy.API(auth)
  60. myStreamListener = MyStreamListener()
  61. myStream = tweepy.Stream(auth=api.auth, listener=myStreamListener)
  62. myStream.filter(track=['#'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement