import os
import dropbox
from datetime import datetime, timezone

# =========================
# 🔐 AUTENTICAÇÃO DROPBOX
# =========================
APP_KEY = os.getenv("DB_APP_KEY", "nnby8bynjhbg8p8")
APP_SECRET = os.getenv("DB_APP_SECRET", "hm09pioat1rxbd8")
REFRESH_TOKEN = os.getenv("DB_REFRESH_TOKEN", "8TS2CwVYbvAAAAAAAAAAAQjC0-a7ZSf2pjdtaruRFcicgFkAnSVLwnkjn5zq5ZCa")

dbx = dropbox.Dropbox(
    app_key=APP_KEY,
    app_secret=APP_SECRET,
    oauth2_refresh_token=REFRESH_TOKEN
)

# =========================
# ⚙️ CONFIGURAÇÕES
# =========================
PASTA_ORIGEM = ""           # raiz do app = "Seu Replay"
HORAS_LIMITE = 96           # tempo máximo de vida (em horas)

LOG_FILE = f"apagados_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"

# =========================
# 🧹 FUNÇÃO PRINCIPAL
# =========================
def apagar_videos_antigos(pasta=PASTA_ORIGEM):
    agora = datetime.now(timezone.utc)
    limite_segundos = HORAS_LIMITE * 3600

    try:
        result = dbx.files_list_folder(pasta, recursive=False)
    except dropbox.exceptions.ApiError as e:
        print(f"❌ Erro ao listar pasta {pasta}: {e}")
        return

    while True:
        for entry in result.entries:
            # 📁 Se for pasta → recursão
            if isinstance(entry, dropbox.files.FolderMetadata):
                apagar_videos_antigos(entry.path_lower)

            # 🎥 Se for arquivo → verifica tempo e apaga
            elif isinstance(entry, dropbox.files.FileMetadata):
                if entry.name.lower().endswith((".mp4", ".mov", ".avi", ".mkv")):
                    data_modificada = entry.client_modified.replace(tzinfo=timezone.utc)
                    idade_segundos = (agora - data_modificada).total_seconds()

                    if idade_segundos > limite_segundos:
                        try:
                            dbx.files_delete_v2(entry.path_lower)

                            log_linha = (
                                f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} | "
                                f"APAGADO: {entry.path_lower}\n"
                            )
                            with open(LOG_FILE, "a", encoding="utf-8") as log:
                                log.write(log_linha)

                            print(f"🗑️ {entry.path_lower} apagado")

                        except dropbox.exceptions.ApiError as e:
                            if "path/not_found" in str(e).lower():
                                print(f"⚠️ Já não existe (ignorado): {entry.path_lower}")
                            else:
                                print(f"❌ Erro ao apagar {entry.path_lower}: {e}")

        if result.has_more:
            result = dbx.files_list_folder_continue(result.cursor)
        else:
            break

# =========================
# 🚀 EXECUÇÃO
# =========================
if __name__ == "__main__":
    print(f"🚀 Iniciando limpeza direta... (log: {LOG_FILE})")
    apagar_videos_antigos()
    print("✅ Todos os vídeos antigos foram apagados.")
    print(f"📁 Relatório salvo em: {LOG_FILE}")
