Python 3, PEP 8 compliance, general refactoring

pull/11/head
David Trail 11 years ago
parent feae80895e
commit 551746f1e9

@ -1,6 +1,9 @@
#!/usr/bin/env python2 #!/usr/bin/env python3
import praw, argparse, ConfigParser import praw
from praw.errors import *
import argparse
from simpleconfigparser import simpleconfigparser
from praw.objects import Comment, Submission from praw.objects import Comment, Submission
from datetime import datetime, timedelta from datetime import datetime, timedelta
from re import sub from re import sub
@ -9,13 +12,19 @@ from time import sleep
try: try:
from loremipsum import get_sentence from loremipsum import get_sentence
except: except:
get_sentence = lambda: '''I have been Shreddited for privacy!\n\nhttps://github.com/x89/Shreddit/''' def get_sentence():
return '''I have been Shreddited for privacy!\n\n\
https://github.com/x89/Shreddit/'''
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('-c', '--config', help="config file to use instead of shreddit.cfg") parser.add_argument(
'-c',
'--config',
help="config file to use instead of the default shreddit.cfg"
)
args = parser.parse_args() args = parser.parse_args()
config = ConfigParser.RawConfigParser() config = simpleconfigparser()
if args.config: if args.config:
config.read(args.config) config.read(args.config)
else: else:
@ -34,29 +43,39 @@ item = config.get('main', 'item')
_user = config.get('main', 'username') _user = config.get('main', 'username')
_pass = config.get('main', 'password') _pass = config.get('main', 'password')
r = praw.Reddit(user_agent="Shreddit-PRAW 2.1") r = praw.Reddit(user_agent="Shreddit-PRAW 3")
if _user and _pass:
def login(user=None, password=None):
try: try:
r.login(_user, _pass) if user and password:
except: r.login(_user, _pass)
# Try again (often get HTTP when Reddit is down for a second errors) else:
sleep(10) r.login() # Let the user supply details
r.login(_user, _pass) except InvalidUserPass as e:
else: raise InvalidUserPass(e)
r.login() except RateLimitExceeded:
raise RateLimitExceeded()
except NonExistentUser:
raise NonExistentUser("User does not exist")
login(user=_user, password=_pass)
if verbose: if verbose:
print "Logged in as {0}".format(r.user) print("Logged in as {user}".format(user=r.user))
if verbose: if verbose:
print "Deleting messages before {0}.".format(datetime.now() - timedelta(hours=hours)) print("Deleting messages before {time}.".format(
time=datetime.now() - timedelta(hours=hours))
)
whitelist = [y.strip().lower() for y in whitelist.split(',')] whitelist = [y.strip().lower() for y in whitelist.split(',')]
whitelist_ids = [y.strip().lower() for y in whitelist_ids.split(',')] whitelist_ids = [y.strip().lower() for y in whitelist_ids.split(',')]
if verbose: if verbose and whitelist:
print "Keeping messages from subreddits {0}".format(', '.join(whitelist)) print("Keeping messages from subreddits {subs}".format(
subs=', '.join(whitelist))
)
things = [] things = []
if item == "comments": if item == "comments":
@ -67,14 +86,13 @@ elif item == "overview":
things = r.user.get_overview(limit=None, sort=sort) things = r.user.get_overview(limit=None, sort=sort)
else: else:
raise Exception("Your deletion section is wrong") raise Exception("Your deletion section is wrong")
for thing in things: for thing in things:
thing_time = datetime.fromtimestamp(thing.created_utc) thing_time = datetime.fromtimestamp(thing.created_utc)
# Delete things after after_time # Delete things after after_time
after_time = datetime.utcnow() - timedelta(hours=hours) after_time = datetime.utcnow() - timedelta(hours=hours)
if thing_time > after_time: if thing_time > after_time:
continue continue
# For edit_only we're assuming that the hours aren't altered. # For edit_only we're assuming that the hours aren't altered.
# This saves time when deleting (you don't edit already edited posts). # This saves time when deleting (you don't edit already edited posts).
if edit_only: if edit_only:
@ -91,20 +109,23 @@ for thing in things:
thing.clear_vote() thing.clear_vote()
if isinstance(thing, Submission): if isinstance(thing, Submission):
if verbose: if verbose:
print u'Deleting submission: #{0} {1}'.format(thing.id, thing.url) print(u'Deleting submission: #{id} {url}'.format(
id=thing.id,
url=thing.url)
)
elif isinstance(thing, Comment): elif isinstance(thing, Comment):
replacement_text = get_sentence() replacement_text = get_sentence()
if verbose: if verbose:
msg = '/r/{3}/ #{0} with:\n\t"{1}" to\n\t"{2}"'.format( msg = '/r/{3}/ #{0} with:\n\t"{1}" to\n\t"{2}"'.format(
thing.id, thing.id,
sub(r'[\t\r\n]', ' ', thing.body.encode('ascii', 'ignore')[:78]), sub(r'\W', ' ', thing.body.encode('ascii', 'ignore')[:78]),
replacement_text[:78], replacement_text[:78],
thing.subreddit thing.subreddit
) )
if edit_only: if edit_only:
print 'Editing ' + msg print('Editing {msg}'.format(msg=msg))
else: else:
print 'Editing and deleting ' + msg print('Editing and deleting {msg}'.format(msg=msg))
thing.edit(replacement_text) thing.edit(replacement_text)
if not edit_only: if not edit_only:
thing.delete() thing.delete()

Loading…
Cancel
Save