40
You'll need to update the praw.Reddit() parameters and set booleans to True based on what you want to have cleared.
This also overwrites your comments with nonsense content seeing as Reddit doesn't really delete your comments if nobody forces them
Sorry about the amateurish Python, this isn't my go-to language
import praw
#Update all values set to XXXXXX and set boolean values to True for whatever you'd like to clear
reddit = praw.Reddit(
client_id="XXXXXX",
client_secret="XXXXXX",
user_agent="script running locally", #required for PRAW but not sure content matters
username="XXXXXX",
password="XXXXXX"
)
#booleans
delete_posts = False
delete_comments = False
delete_saved = False
clear_votes = False
unsubscribe = False
def get_posts():
return reddit.user.me().submissions.new(limit=100)
def get_comments():
return reddit.user.me().comments.new(limit=100)
def get_subscriptions():
return reddit.user.subreddits()
def get_saved_items():
return reddit.user.me().saved(limit=100)
def get_upvoted():
return reddit.user.me().upvoted(limit=100)
def get_downvoted():
return reddit.user.me().downvoted(limit=100)
while(clear_votes):
count = 0
upvotes = get_upvoted()
downvotes = get_downvoted()
for vote in upvotes:
try:
vote.clear_vote()
count += 1
print('Clearing vote for: ', vote)
except Exception as e:
print('Could not clear vote due to: ', e, '(this is normal for archived posts)')
continue
for vote in downvotes:
try:
vote.clear_vote()
count += 1
print('Clearing vote for: ', vote)
except Exception as e:
print('Could not clear vote due to: ', e, '(this is normal for archived posts)')
continue
if(count == 0):
clear_votes = False
while(delete_saved):
count = 0
saved_items = get_saved_items()
for item in saved_items:
item.unsave()
count += 1
print('Unsaved item ID: ', item)
if(count == 0):
delete_saved = False
while(delete_posts):
count = 0
posts = get_posts()
for post in posts:
print("Deleting submission: ", post)
post.delete()
count += 1
if(count == 0):
delete_posts = False
#Replace comments with nonsense data first as Reddit only "marks comments as" deleted
while(delete_comments):
count = 0
comments = reddit.user.me().comments.new(limit=1000)
print("Replacing comments with nonsense data")
for comment in comments:
comment.edit('So long and thanks for all the fish')
print("Deleting comments")
for comment in comments:
comment.delete()
count+=1
if (count == 0):
delete_comments = False
while(unsubscribe):
count = 0
subscriptions = get_subscriptions()
for subreddit in subscriptions:
subreddit.unsubscribe()
count += 1
print('Unsubscribed from: ', subreddit.display_name)
if (count == 0):
unsubscribe = False
print('--finished--')
Someone told me that using a script to delete your posts/comments might be detectable by the Reddit admins. It might be easier to get away with manually editing + deleting your posts/comments, though a random sleep could also work.