Ben bezig met een scrippie die precies dat doet. OpenAI is echt verrassend goed met Python
You’ve hit the Free plan limit for GPT-4o. Responses will use another model until your limit resets tomorrow after 2:06 AM, or get [ChatGPT Plus]()
import os
import tempfile
import ctypes
from datetime import datetime, timedelta
summary_logfile = "summary_cleanup_log.txt"
detailed_logfile = "detailed_cleanup_log.txt"
def is_admin():
"""Check of het script als administrator wordt uitgevoerd."""
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def log_summary(message):
"""Schrijf een logbericht naar het samenvattingslogbestand en toon op het scherm."""
with open(summary_logfile, "a") as log_file:
log_file.write(message + "\n")
print(message)
def log_detailed(message):
"""Schrijf een logbericht naar het gedetailleerde logbestand."""
with open(detailed_logfile, "a") as log_file:
log_file.write(message + "\n")
def convert_size(size_bytes):
"""Converteer bytes naar een leesbare eenheid (KB, MB, GB)."""
if size_bytes == 0:
return "0 Bytes"
size_name = ("Bytes", "KB", "MB", "GB", "TB")
i = int((len(str(size_bytes)) - 1) // 3)
p = 1024 ** i
return f"{size_bytes / p:.2f} {size_name[i]}"
def clear_old_files(directory, days_old):
"""Verwijder alleen bestanden ouder dan een bepaald aantal dagen."""
cutoff_date = datetime.now() - timedelta(days=days_old)
removed_files = 0
removed_size = 0
if not os.path.exists(directory):
log_summary(f"[INFO] Map bestaat niet: {directory}")
return removed_files, removed_size
for root, dirs, files in os.walk(directory):
for name in files:
file_path = os.path.join(root, name)
try:
file_time = datetime.fromtimestamp(os.path.getmtime(file_path))
if file_time < cutoff_date:
file_size = os.path.getsize(file_path)
os.remove(file_path)
removed_files += 1
removed_size += file_size
log_detailed(f"[BESTAND VERWIJDERD] {file_path} ({convert_size(file_size)}) - Laatst gewijzigd: {file_time}")
except Exception as e:
log_detailed(f"[ERROR] Kan bestand niet verwijderen: {file_path} ({e})")
return removed_files, removed_size
def clear_temp_files(days_old=30):
"""Verwijder tijdelijke bestanden ouder dan een bepaald aantal dagen."""
temp_dir = tempfile.gettempdir()
log_summary(f"Verwijderen van tijdelijke bestanden ouder dan {days_old} dagen in {temp_dir}...")
return clear_old_files(temp_dir, days_old)
def clear_windows_temp(days_old=30):
"""Verwijder Windows-specifieke tijdelijke bestanden ouder dan een bepaald aantal dagen."""
windows_temp = os.path.expandvars(r"%WINDIR%\Temp")
log_summary(f"Verwijderen van Windows temp-bestanden ouder dan {days_old} dagen in {windows_temp}...")
return clear_old_files(windows_temp, days_old)
def clear_prefetch(days_old=30):
"""Verwijder alleen oude bestanden in de Windows Prefetch-map."""
prefetch_dir = os.path.expandvars(r"%WINDIR%\Prefetch")
log_summary(f"Verwijderen van bestanden ouder dan {days_old} dagen in {prefetch_dir}...")
return clear_old_files(prefetch_dir, days_old)
def clear_browser_cache(browser_cache_dirs, days_old=30):
"""Verwijder browsercache- en geschiedenisb bestanden ouder dan een bepaald aantal dagen."""
total_files_removed = 0
total_size_removed = 0
for browser, path in browser_cache_dirs.items():
log_summary(f"Verwijderen van {browser} cache- en geschiedenisbestanden ouder dan {days_old} dagen in {path}...")
files_removed, size_removed = clear_old_files(path, days_old)
total_files_removed += files_removed
total_size_removed += size_removed
return total_files_removed, total_size_removed
def main():
if not is_admin():
print("Dit script moet als administrator worden uitgevoerd!")
return
# Start logging
with open(summary_logfile, "w") as log_summary_file:
log_summary_file.write(f"--- Opschonen gestart: {datetime.now()} ---\n")
with open(detailed_logfile, "w") as log_detailed_file:
log_detailed_file.write(f"--- Gedetailleerd Opschonen Log: {datetime.now()} ---\n")
log_summary("Start opschonen van tijdelijke en overbodige bestanden...")
total_files_removed = 0
total_size_removed = 0
# Definieer browsercache-paden
browser_cache_dirs = {
"Edge": os.path.expandvars(r"%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache"),
"Chrome": os.path.expandvars(r"%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache"),
"Firefox": os.path.expandvars(r"%APPDATA%\Mozilla\Firefox\Profiles")
}
# Opruimacties
files, size = clear_temp_files(days_old=30)
total_files_removed += files
total_size_removed += size
files, size = clear_windows_temp(days_old=30)
total_files_removed += files
total_size_removed += size
files, size = clear_prefetch(days_old=30)
total_files_removed += files
total_size_removed += size
files, size = clear_browser_cache(browser_cache_dirs, days_old=30)
total_files_removed += files
total_size_removed += size
# Samenvatting
log_summary("\n--- Opschonen voltooid ---")
log_summary(f"Totaal verwijderde bestanden: {total_files_removed}")
log_summary(f"Totaal verwijderde grootte: {convert_size(total_size_removed)}")
log_summary(f"Samenvattingslog opgeslagen in {summary_logfile}")
log_summary(f"Gedetailleerd logbestand opgeslagen in {detailed_logfile}")
log_detailed("\n--- Opschonen voltooid ---")
log_detailed(f"Totaal verwijderde bestanden: {total_files_removed}")
log_detailed(f"Totaal verwijderde grootte: {convert_size(total_size_removed)}")
print(f"\nSamenvatting:\n- Verwijderde bestanden: {total_files_removed}\n- Verwijderde grootte: {convert_size(total_size_removed)}")
print(f"Samenvattingslog opgeslagen in {summary_logfile}")
print(f"Gedetailleerd logbestand opgeslagen in {detailed_logfile}")
if __name__ == "__main__":
main()
[Reactie gewijzigd door BasHouse op 15 november 2024 22:21]