import os import argparse from datetime import datetime from dotenv import load_dotenv import logger_utilities from pipeline import run_pipeline # ============================================================================ def non_negative_int(value: str) -> int: ivalue = int(value) if ivalue < 0: raise argparse.ArgumentTypeError( f"{value} es un valor inválido. --dias debe ser 0 o mayor." ) return ivalue # ============================================================================ def main() -> None: parser = argparse.ArgumentParser( description="Obtener correos electrónicos de Office365 de hoy y los últimos X días." ) parser.add_argument( "--dias", "-d", type=non_negative_int, default=2, help="Número de días respecto a la fecha actual para la consulta (default: 2)." ) args = parser.parse_args() dias = args.dias if dias == 0: print("📋 Obteniendo correos electrónicos de Office365 hoy.") else: print(f"📋 Obteniendo correos electrónicos de Office365 desde hace {dias} días hasta hoy.") load_dotenv(dotenv_path=".env.dev") EMAIL = os.getenv("EMAIL", "") DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER", "") OUTPUT_FOLDER = os.getenv("OUTPUT_FOLDER", "") run_pipeline(dias, EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER) # ============================================================================ if __name__ == "__main__": log_path = logger_utilities.setup_logger() logger_utilities.limpiar_logs_antiguos(dias=30) inicio = datetime.now() print("=" * 60) print(f"🚀 INICIO DE EJECUCIÓN: {inicio.strftime('%Y-%m-%d %H:%M:%S')}") print(f"📄 Log guardado en: {log_path}") print("=" * 60) main() fin = datetime.now() duracion = fin - inicio print("\n" + "=" * 60) print(f"🏁 FIN DE EJECUCIÓN: {fin.strftime('%Y-%m-%d %H:%M:%S')}") print(f"⏱️ Duración total: {str(duracion).split('.')[0]}") print("=" * 60)