1
4
cross-posted from: https://lemmy.world/post/647097
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--')