Created
September 13, 2015 19:01
-
-
Save Pokechu22/58189e280cab0b6535e9 to your computer and use it in GitHub Desktop.
Gets a list of submissions to /r/spam that were not actioned upon
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Get a list of submissions to /r/spam where the user was not banned | |
import praw | |
import praw.errors | |
import re | |
import time | |
SUBREDDIT_NAME = 'spam' | |
USER_NAME = 'pokechu22' | |
class UserInfo: | |
'''Contains information about a reported user''' | |
def __init__(self, user, report): | |
self.user = user | |
self.username = user.name | |
self.created_date = user.created | |
self.all_reports = [report] | |
self.oldest_report = report | |
def add_report(self, new_report): | |
self.all_reports.append(new_report) | |
self.oldest_report = all_reports.sorted(key=lambda report:report.created) | |
def __repr__(self): | |
TIME_FORMAT = '%a, %d %b %Y %H:%M:%S' | |
report_text = '' | |
for report in self.all_reports: | |
report_text = report_text + '[' + report.title + '](http://redd.it/' + report.id + '), ' | |
report_text = report_text.strip(', ') | |
oldest_report_time = time.strftime(TIME_FORMAT, time.gmtime(self.oldest_report.created)) | |
created_time = time.strftime(TIME_FORMAT, time.gmtime(user.created)) | |
return '/u/' + self.username + '|' + oldest_report_time + '|' + \ | |
created_time + '|' + str(len(self.all_reports)) + ' (' + \ | |
report_text + ')' | |
r = praw.Reddit(user_agent='My /r/spam submissions; ver 0.0; ' | |
'by /u/pokechu22') | |
user = r.get_redditor(USER_NAME) | |
submitted = user.get_submitted(limit=None) | |
spam_subreddit = r.get_subreddit(SUBREDDIT_NAME) | |
spam_submissions = [] | |
for submission in submitted: | |
if submission.subreddit == spam_subreddit: | |
spam_submissions.append(submission) | |
URL_RX = re.compile(r"\A.*\/u(?:ser)?\/([\w-]+)\Z") | |
banned_users = [] | |
non_banned_users = {} | |
for submission in spam_submissions: | |
submitted_user_name = URL_RX.sub('\\1', submission.url.strip()) | |
if submitted_user_name not in banned_users: | |
try: | |
if submitted_user_name in non_banned_users: | |
print submitted_user_name, 'is new' | |
non_banned_users[submitted_user_name].all_reports.append(submission) | |
else: | |
submitted_user = r.get_redditor(submitted_user_name) | |
submitted_user_info = UserInfo(submitted_user, submission) | |
#Nonexistant user will have thrown an exception by this point | |
print submitted_user_name, 'was reported before' | |
non_banned_users[submitted_user_name] = submitted_user_info | |
except praw.errors.NotFound: | |
print submitted_user_name, 'is banned' | |
banned_users.append(submitted_user_name) | |
print 'User|First reported|Account age|Reports' | |
print '----|--------------|-----------|-------' | |
for name in sorted(non_banned_users.iterkeys(), key=lambda name:non_banned_users[name].oldest_report.created): | |
print non_banned_users[name] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment