2026-06-03 18:32:18 -05:00
|
|
|
import os
|
2026-07-09 09:48:30 -05:00
|
|
|
import argparse
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
2026-06-01 16:31:24 -05:00
|
|
|
import logger_utilities
|
2026-07-09 09:48:30 -05:00
|
|
|
from pipeline import run_pipeline
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
# ============================================================================
|
|
|
|
|
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
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
# ============================================================================
|
|
|
|
|
def main() -> None:
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
|
description="Obtener correos electrónicos de Office365 de hoy y los últimos X días."
|
|
|
|
|
)
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
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)."
|
|
|
|
|
)
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
args = parser.parse_args()
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
dias = args.dias
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
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.")
|
2026-06-01 16:31:24 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
load_dotenv(dotenv_path=".env.dev")
|
2026-06-01 18:05:44 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
EMAIL = os.getenv("EMAIL", "")
|
|
|
|
|
DOWNLOAD_FOLDER = os.getenv("DOWNLOAD_FOLDER", "")
|
|
|
|
|
OUTPUT_FOLDER = os.getenv("OUTPUT_FOLDER", "")
|
2026-06-03 18:32:18 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
run_pipeline(dias, EMAIL, DOWNLOAD_FOLDER, OUTPUT_FOLDER)
|
2026-06-03 18:32:18 -05:00
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
# ============================================================================
|
2026-06-03 18:32:18 -05:00
|
|
|
|
2026-06-01 16:31:24 -05:00
|
|
|
if __name__ == "__main__":
|
|
|
|
|
log_path = logger_utilities.setup_logger()
|
|
|
|
|
logger_utilities.limpiar_logs_antiguos(dias=30)
|
|
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
inicio = datetime.now()
|
|
|
|
|
print("=" * 60)
|
|
|
|
|
print(f"🚀 INICIO DE EJECUCIÓN: {inicio.strftime('%Y-%m-%d %H:%M:%S')}")
|
2026-06-01 16:31:24 -05:00
|
|
|
print(f"📄 Log guardado en: {log_path}")
|
2026-07-09 09:48:30 -05:00
|
|
|
print("=" * 60)
|
2026-06-01 16:31:24 -05:00
|
|
|
|
|
|
|
|
main()
|
|
|
|
|
|
2026-07-09 09:48:30 -05:00
|
|
|
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)
|