Files
descarga_factura_transporte/main.py
T

68 lines
2.0 KiB
Python
Raw Normal View History

import os
import argparse
from datetime import datetime
from dotenv import load_dotenv
2026-06-01 16:31:24 -05:00
import logger_utilities
from pipeline import run_pipeline
2026-06-01 16:31:24 -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
# ============================================================================
def main() -> None:
2026-06-01 16:31:24 -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
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
args = parser.parse_args()
2026-06-01 16:31:24 -05:00
dias = args.dias
2026-06-01 16:31:24 -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
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)
# ============================================================================
2026-06-01 16:31:24 -05:00
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')}")
2026-06-01 16:31:24 -05:00
print(f"📄 Log guardado en: {log_path}")
print("=" * 60)
2026-06-01 16:31:24 -05:00
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)