Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import json
- import operator
- import praw
- import pprint
- userkarma = {}
- bots = [
- 'anti-gif-bot',
- 'imguralbumbot',
- 'sneakpeekbot',
- 'CommonMisspellingBot',
- 'GoodBot_BadBot',
- 'gifv-bot',
- 'haikubot-1911',
- 'friendly-bot',
- 'arnit_Bot',
- 'video_descriptionbot',
- 'ClickableLinkBot',
- 'MaxImageBot',
- 'HelperBot',
- 'WikiTextBot',
- 'doggobotlovesyou',
- '_youtubot_',
- '[deleted]'
- ]
- total_listing_count = 0
- for listing in ["comment","submission"]:
- print("Loading {}s".format(listing))
- before = "";
- while True:
- response = requests.get(url="https://api.pushshift.io/reddit/{}/search/?subreddit=rolereversal&size=100&sort=desc&before={}".format(listing,before))
- data = response.json()["data"]
- results_count = len(data)
- total_listing_count = total_listing_count + results_count
- if results_count == 0:
- break
- for comment in data:
- if comment["author"] not in userkarma:
- userkarma[comment["author"]] = 0
- userkarma[comment["author"]] = userkarma[comment["author"]] + comment["score"]
- before = data[-1]["created_utc"]
- print("Loaded a total of {} listings".format(total_listing_count))
- sorted_userkarma = sorted(userkarma.items(), key=operator.itemgetter(1),reverse=True)
- file = open("userkarma.csv", "w")
- file.write("username,karma_in_rolereversal\n")
- for user in sorted_userkarma:
- file.write("{},{}\n".format(user[0],user[1]))
- file.close()
- reddit = praw.Reddit(client_id='OFkKFYeo9fcNEw',
- client_secret='ywRPvPxCuzNK49oxMUu0jDgPaEc',
- password='Firelock00',
- user_agent='RR_analysis by /u/ChrystalShield',
- username='ChrystalShield')
- filtered_userkarma = [user for user in sorted_userkarma if user[1] >= 3]
- usernames = [user[0] for user in filtered_userkarma]
- user_subreddits = {}
- for user in usernames:
- print("Loading data for {} who has {} karma in RR".format(user,userkarma[user]))
- user_other_subreddits = {}
- if user in bots:
- continue
- try:
- submissions = list(["t3_{}".format(submission.id) for submission in list(reddit.redditor(user).submissions.new(limit=None))])
- print("Loading submissions for {}".format(user))
- submissions_data = [{"subreddit": submission.subreddit.display_name, "score": submission.score} for submission in reddit.info(submissions)]
- comments = ["t1_{}".format(comment.id) for comment in list(reddit.redditor(user).comments.new(limit=None))]
- print("Loading comments for {}".format(user))
- comments_data = [{"subreddit": comment.subreddit.display_name, "score": comment.score} for comment in reddit.info(comments)]
- for data in submissions_data:
- subreddit = data["subreddit"]
- karma = data["score"]
- if subreddit not in user_other_subreddits:
- user_other_subreddits[subreddit] = 0
- user_other_subreddits[subreddit] = user_other_subreddits[subreddit] + karma
- for data in comments_data:
- subreddit = data["subreddit"]
- karma = data["score"]
- if subreddit not in user_other_subreddits:
- user_other_subreddits[subreddit] = 0
- user_other_subreddits[subreddit] = user_other_subreddits[subreddit] + karma
- user_subreddits[user] = user_other_subreddits
- except Exception as exception:
- print("An exception occurred while loading data for {}".format(user))
- print(type(exception))
- print("Finished processing all users. Now processing loaded data.")
- file = open("user_subreddits.json", "w")
- pprint.pprint(user_subreddits, stream=file, indent=4)
- file.close()
- subreddits_count = {}
- for user, subreddits in user_subreddits.items():
- for subreddit, karma in subreddits.items():
- if subreddit == 'rolereversal':
- continue
- if(karma>=5):
- if subreddit not in subreddits_count:
- subreddits_count[subreddit] = 0
- subreddits_count[subreddit] = subreddits_count[subreddit] + 1
- sorted_subreddits_count = sorted(subreddits_count.items(), key=operator.itemgetter(1),reverse=True)
- file = open("subreddits.csv", "w")
- file.write("subreddit,number_of_RR_users\n")
- for subreddit in sorted_subreddits_count:
- file.write("{},{}\n".format(subreddit[0],subreddit[1]))
- file.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement