Skip to content

Instantly share code, notes, and snippets.

@Pokechu22
Created September 13, 2015 19:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Pokechu22/58189e280cab0b6535e9 to your computer and use it in GitHub Desktop.
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
# 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