import config import os import time import sqlite3 import subprocess if __name__ == "__main__": connection = sqlite3.connect(config.db_file) cursor = connection.cursor() now = int(time.time()) max_created_utc = now - config.max_age_seconds select = "SELECT count(*) FROM post WHERE created_utc < ?" binds = [max_created_utc] results = cursor.execute(select, binds) print("Deleting old posts") delete = "DELETE FROM post WHERE created_utc < ?" cursor.execute(delete, binds) print("Deleting old media db rows") delete = "DELETE FROM media WHERE permalink NOT IN (SELECT permalink FROM post)" cursor.execute(delete) all_files_local = subprocess.run(["find", "/reddit/media", "-type", "f"], capture_output=True, text=True) all_files_local = set(all_files_local.stdout.splitlines()) select = "SELECT local from media" results = cursor.execute(select).fetchall() connection.commit() connection.close() all_files_db = set([row[0] for row in results]) extra_files = all_files_local - all_files_db print("Deleting old files") for file in extra_files: print(f"Removing {file}") os.remove(file) empty_dirs = subprocess.run(["find", "/reddit/media", "-type", "d", "-empty"], capture_output=True, text=True) empty_dirs = set(empty_dirs.stdout.splitlines()) print("Deleting empty directories") for dir in empty_dirs: print(f"Removind dir {dir}") os.rmdir(dir) print("Done")