You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Shreddit/shreddit

96 lines
2.4 KiB

#!/usr/bin/env python2
import praw
import ConfigParser
import argparse
from datetime import datetime, timedelta
try:
from loremipsum import get_sentence
except:
get_sentence = '''I have been Shreddited for privacy!'''
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--config', help="config file to use instead of shreddit.cfg")
args = parser.parse_args()
config = ConfigParser.RawConfigParser()
if args.config:
config.read(args.config)
else:
config.read('shreddit.cfg')
hours = config.getint('main', 'hours')
whitelist = config.get('main', 'whitelist')
whitelist_ids = config.get('main', 'whitelist_ids')
sort = config.get('main', 'sort')
verbose = config.getboolean('main', 'verbose')
clear_vote = config.getboolean('main', 'clear_vote')
trial_run = config.getboolean('main', 'trial_run')
item = config.get('main', 'item')
_user = config.get('main', 'username')
_pass = config.get('main', 'password')
r = praw.Reddit(user_agent="Shreddit-PRAW 2.0")
if _user and _pass:
r.login(_user, _pass)
else:
r.login()
if verbose:
print "Logged in as %s" % r.user
before_time = datetime.now() - timedelta(hours=hours)
if verbose:
print "Deleting messages before %s" % before_time
whitelist = [y.strip().lower() for y in whitelist.split(',')]
whitelist_ids = [y.strip().lower() for y in whitelist_ids.split(',')]
if verbose:
print "Keeping messages from subreddits %s" % ', '.join(whitelist)
things = []
if item == "comments":
things = r.user.get_comments(limit=None, sort=sort)
elif item == "submitted":
things = r.user.get_submitted(limit=None, sort=sort)
elif item == "overview":
things = r.user.get_overview(limit=None, sort=sort)
else:
raise Exception("Your deletion section is wrong")
for thing in things:
thing_time = datetime.fromtimestamp(thing.created)
#print "%s, %s, %s" % (thing_time, before_time, thing_time < before_time)
if thing.id in whitelist_ids:
continue
if thing_time > before_time:
continue
if str(thing.subreddit).lower() in whitelist:
continue
if item == "submitted" or item == "overview":
if verbose:
print "Deleting: %s" % thing
thing.delete()
elif item == "comments":
if verbose:
print 'Deleting: [%s]: "%s"' % (thing.subreddit, thing.body[:20])
if clear_vote:
thing.clear_vote()
if trial_run:
thing.edit(get_sentence)
if verbose:
print "Edited comment with {0}".format(get_sentence)
thing.delete()
if verbose:
print "Comment deleted."