Erste Version - tut lokal aufm MAC
This commit is contained in:
88
main.py
Normal file
88
main.py
Normal file
@@ -0,0 +1,88 @@
|
||||
import imaplib
|
||||
import email
|
||||
import os
|
||||
import shutil
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# === KONFIGURATION ===
|
||||
IMAP_SERVER = "secureimap.t-online.de"
|
||||
IMAP_PORT = 993
|
||||
EMAIL_USER = "dk2ge@t-online.de"
|
||||
EMAIL_PASS = "ETBjw65tf2"
|
||||
SAVE_DIR = "./videospeicher"
|
||||
|
||||
# === ALTE DATEIEN LÖSCHEN (älter als 1 Jahr) ===
|
||||
def cleanup_old_files(base_dir, days=365):
|
||||
cutoff = datetime.now() - timedelta(days=days)
|
||||
for root, dirs, files in os.walk(base_dir):
|
||||
for file in files:
|
||||
filepath = os.path.join(root, file)
|
||||
try:
|
||||
mtime = datetime.fromtimestamp(os.path.getmtime(filepath))
|
||||
if mtime < cutoff:
|
||||
print(f"Lösche altes Video: {filepath}")
|
||||
os.remove(filepath)
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Löschen von {filepath}: {e}")
|
||||
|
||||
# leere Ordner aufräumen
|
||||
for root, dirs, files in os.walk(base_dir, topdown=False):
|
||||
for d in dirs:
|
||||
dirpath = os.path.join(root, d)
|
||||
if not os.listdir(dirpath):
|
||||
shutil.rmtree(dirpath)
|
||||
|
||||
# === MAILS VERARBEITEN ===
|
||||
def process_mails():
|
||||
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
|
||||
mail.login(EMAIL_USER, EMAIL_PASS)
|
||||
mail.select("INBOX")
|
||||
|
||||
status, messages = mail.search(None, "ALL")
|
||||
if status != "OK":
|
||||
print("Keine Mails gefunden.")
|
||||
return
|
||||
|
||||
for num in messages[0].split():
|
||||
status, msg_data = mail.fetch(num, "(RFC822)")
|
||||
if status != "OK":
|
||||
continue
|
||||
|
||||
msg = email.message_from_bytes(msg_data[0][1])
|
||||
|
||||
# Datum für Ordnerstruktur bestimmen
|
||||
mail_date = msg["Date"]
|
||||
try:
|
||||
parsed_date = email.utils.parsedate_to_datetime(mail_date)
|
||||
except Exception:
|
||||
parsed_date = datetime.now()
|
||||
|
||||
year = parsed_date.strftime("%Y")
|
||||
month = parsed_date.strftime("%m")
|
||||
day = parsed_date.strftime("%d")
|
||||
|
||||
folder_path = os.path.join(SAVE_DIR, year, month, day)
|
||||
os.makedirs(folder_path, exist_ok=True)
|
||||
|
||||
# Anhänge speichern
|
||||
for part in msg.walk():
|
||||
if part.get_content_disposition() == "attachment":
|
||||
filename = part.get_filename()
|
||||
if not filename:
|
||||
filename = "anhang.mp4"
|
||||
filepath = os.path.join(folder_path, filename)
|
||||
|
||||
with open(filepath, "wb") as f:
|
||||
f.write(part.get_payload(decode=True))
|
||||
print(f"Gespeichert: {filepath}")
|
||||
|
||||
# Mail nach Verarbeitung löschen
|
||||
mail.store(num, "+FLAGS", "\\Deleted")
|
||||
|
||||
mail.expunge()
|
||||
mail.logout()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cleanup_old_files(SAVE_DIR, days=365)
|
||||
process_mails()
|
||||
Reference in New Issue
Block a user