Skip to content

Instantly share code, notes, and snippets.

@thomsh
Forked from chrisalbon/tweet_deleting_script.py
Last active April 13, 2021 12:08
Show Gist options
  • Save thomsh/be349233ebdd0e55148aefced705f72c to your computer and use it in GitHub Desktop.
Save thomsh/be349233ebdd0e55148aefced705f72c to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
""" Deletes all tweets below a certain retweet threshold.
You have to create an app on twitter, and follow their process to have the required creds
and setup write permissions.
"""
import tweepy
from datetime import datetime
import os
# Creds
CONSUMER_KEY = os.environ.get("TW_CONSUMER_KEY")
CONSUMER_SECRET = os.environ.get("TW_CONSUMER_SECRET")
ACCESS_TOKEN = os.environ.get("TW_ACCESS_TOKEN")
ACCESS_SECRET = os.environ.get("TW_ACCESS_SECRET")
USER_NAME = os.environ.get("TW_USER_NAME")
# Connect To Your Twitter Account via Twitter API
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth,
wait_on_rate_limit=True,
wait_on_rate_limit_notify=True,
retry_count=3,
retry_delay=5,
retry_errors=set([401, 404, 500, 503]))
# For the account name
def wipe(account_name=USER_NAME, favorite_threshold=100, days=720):
# Get the current datetime
current_date = datetime.utcnow()
# For each tweet
for status in tweepy.Cursor(api.user_timeline, screen_name='@'+account_name).items():
# Get the tweet id
status_id = status._json['id']
print(datetime.now().strftime("%d/%m/%Y %H:%M:%S"), 'Examining', status_id)
# Get the number of favorites
status_favorites = status._json['favorite_count']
# Get the datetime of the tweet
status_date = datetime.strptime(status._json['created_at'], '%a %b %d %H:%M:%S +0000 %Y')
# Get whether you have favorited the tweet yourself
status_favorited = status._json['favorited']
# If the difference between the current datetime and the tweet's
# is more than a day threshold
if (datetime.utcnow() - status_date).days > days:
# If the number of favorites is lower than the favorite threshold
if status_favorites < favorite_threshold:
# If you haven't favorited the tweet yourself
if status_favorited == False:
# Delete the tweet
api.destroy_status(status_id)
print(datetime.now().strftime("%d/%m/%Y %H:%M:%S"), 'Deleting', status_id)
# Run main function
if __name__ == '__main__':
wipe()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment