Files
descarga_factura_transporte/main.py
T

69 lines
2.0 KiB
Python

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)