From ae271d3374aa07903c2c44c13461d3a87646fe0e Mon Sep 17 00:00:00 2001 From: Tobias Schmidl Date: Fri, 29 Jan 2021 11:36:36 +0100 Subject: [PATCH] first rework --- tweetdelete.py | 83 ++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 44 deletions(-) mode change 100644 => 100755 tweetdelete.py diff --git a/tweetdelete.py b/tweetdelete.py old mode 100644 new mode 100755 index 0662ebd..1e24f37 --- a/tweetdelete.py +++ b/tweetdelete.py @@ -1,50 +1,45 @@ -#!/usr/bin/env python - -import tweepy +#!/usr/bin/env python3 + +import os from datetime import datetime, timedelta - + +import toml +import tweepy +from xdg import xdg_config_home + # options -test_mode = False -verbose = True -delete_tweets = True -days_to_keep = 30 - -tweets_to_save = [ -# 1234567890 -] - +twitter_config = toml.load(os.path.join(xdg_config_home(), "twitter.toml")) +test_mode = twitter_config["test_mode"] if "test_mode" in twitter_config else False +verbose = twitter_config["verbose"] if "verbose" in twitter_config else False +days_to_keep = twitter_config["days_to_keep"] if "days_to_keep" in twitter_config else 30 +tweets_to_save = twitter_config["tweets_to_save"] if "tweets_to_save" in twitter_config else [] +secrets = twitter_config["secrets"] + # auth and api -consumer_key = 'FOOBAR' -consumer_secret = 'FOOBAR' -access_token = 'FOOBAR' -access_token_secret = 'FOOBAR' -auth = tweepy.OAuthHandler(consumer_key, consumer_secret) -auth.set_access_token(access_token, access_token_secret) +auth = tweepy.OAuthHandler(secrets['api_key'], secrets['api_key_secret']) +auth.set_access_token(secrets['access_token'], secrets['access_token_secret']) api = tweepy.API(auth) - + # set cutoff date, use utc to match twitter cutoff_date = datetime.utcnow() - timedelta(days=days_to_keep) - -# delete old tweets -if delete_tweets: - # get all timeline tweets - print("Retrieving timeline tweets") - timeline = tweepy.Cursor(api.user_timeline).items() - deletion_count = 0 - ignored_count = 0 - - for tweet in timeline: - # where tweets are not in save list and older than cutoff date - if tweet.id not in tweets_to_save and tweet.created_at < cutoff_date: - if verbose: - print("Deleting %d: [%s] %s" % (tweet.id, tweet.created_at, tweet.text)) - if not test_mode: - api.destroy_status(tweet.id) - - deletion_count += 1 - else: - ignored_count += 1 - - print("Deleted %d tweets, ignored %d" % (deletion_count, ignored_count)) -else: - print("Not deleting tweets") + +# get all timeline tweets +print("Retrieving timeline tweets") +timeline = tweepy.Cursor(api.user_timeline).items() +deletion_count = 0 +ignored_count = 0 + +for tweet in timeline: + # where tweets are not in save list and older than cutoff date + if tweet.id not in tweets_to_save and tweet.created_at < cutoff_date: + if verbose: + print("Deleting %d: [%s] %s" % + (tweet.id, tweet.created_at, tweet.text)) + if not test_mode: + api.destroy_status(tweet.id) + + deletion_count += 1 + else: + ignored_count += 1 + +print("Deleted %d tweets, ignored %d" % (deletion_count, ignored_count))