diff --git a/cleanup.py b/cleanup.py new file mode 100644 index 0000000..43bca62 --- /dev/null +++ b/cleanup.py @@ -0,0 +1,44 @@ +"""Cleanup old posts that did not have any interactions""" + +# ----- imports ----- # + +from dotenv import load_dotenv +from mastodon import Mastodon +from os import getenv + +# ----- initialization ----- # + +# load .env +load_dotenv() + +# initialize mastodon +mastodon = Mastodon( + access_token = getenv("MASTODON_USER_SECRET"), + api_base_url = getenv("MASTODON_URL") +) + +# ----- go 200 posts into the past ----- # + +# get latest posts +last_posts = mastodon.account_statuses(getenv("MASTODON_USER_ID"), exclude_replies=True, limit=40) +id_oldest_of_last_posts = -1 +for i in range(4): + id_oldest_of_last_posts = last_posts[-1]["id"] + last_posts = mastodon.account_statuses(getenv("MASTODON_USER_ID"), exclude_replies=True, max_id=id_oldest_of_last_posts, limit=40) + +# ----- delete old posts ----- # + +for i in range(5): # default: check 5 batches of 40 posts + # find id of the currently oldest post + last_post = last_posts[-1] + if last_post["favourites_count"] != 0 or last_post["reblogs_count"] != 0 or last_post["replies_count"] != 0: + id_oldest_of_last_posts = last_post["id"] + # get next batch of posts + last_posts = mastodon.account_statuses(getenv("MASTODON_USER_ID"), exclude_replies=True, max_id=id_oldest_of_last_posts, limit=40) + + # delete all old posts of the current batch + for submission in last_posts: + # if post has no favorites, boosts or replies, delete it + if submission["favourites_count"] == 0 and submission["reblogs_count"] == 0 and submission["replies_count"] == 0: + print("Trying to delete post:", submission["url"]) + mastodon.status_delete(submission["id"])