Advertisement
Guest User

RR script

a guest
Aug 26th, 2018
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.07 KB | None | 0 0
  1. import requests
  2. import json
  3. import operator
  4. import praw
  5. import pprint
  6.  
  7. userkarma = {}
  8. bots = [
  9. 'anti-gif-bot',
  10. 'imguralbumbot',
  11. 'sneakpeekbot',
  12. 'CommonMisspellingBot',
  13. 'GoodBot_BadBot',
  14. 'gifv-bot',
  15. 'haikubot-1911',
  16. 'friendly-bot',
  17. 'arnit_Bot',
  18. 'video_descriptionbot',
  19. 'ClickableLinkBot',
  20. 'MaxImageBot',
  21. 'HelperBot',
  22. 'WikiTextBot',
  23. 'doggobotlovesyou',
  24. '_youtubot_',
  25. '[deleted]'
  26. ]
  27.  
  28. total_listing_count = 0
  29.  
  30.  
  31. for listing in ["comment","submission"]:
  32.     print("Loading {}s".format(listing))
  33.     before = "";
  34.     while True:
  35.         response = requests.get(url="https://api.pushshift.io/reddit/{}/search/?subreddit=rolereversal&size=100&sort=desc&before={}".format(listing,before))
  36.         data = response.json()["data"]
  37.         results_count = len(data)
  38.         total_listing_count = total_listing_count + results_count
  39.         if results_count == 0:
  40.             break
  41.  
  42.         for comment in data:
  43.             if comment["author"] not in userkarma:
  44.                 userkarma[comment["author"]] = 0
  45.             userkarma[comment["author"]] = userkarma[comment["author"]] + comment["score"]
  46.  
  47.         before = data[-1]["created_utc"]
  48.  
  49. print("Loaded a total of {} listings".format(total_listing_count))
  50.  
  51. sorted_userkarma = sorted(userkarma.items(), key=operator.itemgetter(1),reverse=True)
  52. file = open("userkarma.csv", "w")
  53.  
  54. file.write("username,karma_in_rolereversal\n")
  55. for user in sorted_userkarma:
  56.     file.write("{},{}\n".format(user[0],user[1]))
  57. file.close()
  58.  
  59. reddit = praw.Reddit(client_id='OFkKFYeo9fcNEw',
  60.                      client_secret='ywRPvPxCuzNK49oxMUu0jDgPaEc',
  61.                      password='Firelock00',
  62.                      user_agent='RR_analysis by /u/ChrystalShield',
  63.                      username='ChrystalShield')
  64.  
  65. filtered_userkarma = [user for user in sorted_userkarma if user[1] >= 3]
  66. usernames = [user[0] for user in filtered_userkarma]
  67.  
  68. user_subreddits = {}
  69. for user in usernames:
  70.     print("Loading data for {} who has {} karma in RR".format(user,userkarma[user]))
  71.     user_other_subreddits = {}
  72.     if user in bots:
  73.         continue
  74.     try:
  75.         submissions = list(["t3_{}".format(submission.id) for submission in list(reddit.redditor(user).submissions.new(limit=None))])
  76.         print("Loading submissions for {}".format(user))
  77.         submissions_data = [{"subreddit": submission.subreddit.display_name, "score": submission.score} for submission in reddit.info(submissions)]
  78.         comments = ["t1_{}".format(comment.id) for comment in list(reddit.redditor(user).comments.new(limit=None))]
  79.         print("Loading comments for {}".format(user))
  80.         comments_data = [{"subreddit": comment.subreddit.display_name, "score": comment.score} for comment in reddit.info(comments)]
  81.         for data in submissions_data:
  82.             subreddit = data["subreddit"]
  83.             karma = data["score"]
  84.             if subreddit not in user_other_subreddits:
  85.                 user_other_subreddits[subreddit] = 0
  86.             user_other_subreddits[subreddit] = user_other_subreddits[subreddit] + karma
  87.  
  88.         for data in comments_data:
  89.             subreddit = data["subreddit"]
  90.             karma = data["score"]
  91.             if subreddit not in user_other_subreddits:
  92.                 user_other_subreddits[subreddit] = 0
  93.             user_other_subreddits[subreddit] = user_other_subreddits[subreddit] + karma
  94.         user_subreddits[user] = user_other_subreddits
  95.     except Exception as exception:
  96.         print("An exception occurred while loading data for {}".format(user))
  97.         print(type(exception))
  98.  
  99. print("Finished processing all users. Now processing loaded data.")
  100.  
  101. file = open("user_subreddits.json", "w")
  102. pprint.pprint(user_subreddits, stream=file, indent=4)
  103. file.close()
  104.  
  105. subreddits_count = {}
  106. for user, subreddits in user_subreddits.items():
  107.     for subreddit, karma in subreddits.items():
  108.         if subreddit == 'rolereversal':
  109.             continue
  110.         if(karma>=5):
  111.             if subreddit not in subreddits_count:
  112.                 subreddits_count[subreddit] = 0
  113.             subreddits_count[subreddit] = subreddits_count[subreddit] + 1
  114.  
  115. sorted_subreddits_count = sorted(subreddits_count.items(), key=operator.itemgetter(1),reverse=True)
  116. file = open("subreddits.csv", "w")
  117. file.write("subreddit,number_of_RR_users\n")
  118. for subreddit in sorted_subreddits_count:
  119.     file.write("{},{}\n".format(subreddit[0],subreddit[1]))
  120. file.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement