## `src/main.py` (punto de entrada)

from __future__ import annotations

import argparse
from pathlib import Path

from src.scraper import OMAFlightScraper, ScrapeResult
from src.storage import ExcelStore


DEFAULT_URL = "https://aeropuertomazatlan.oma.aero/es/vuelos/estatus-de-vuelos.php"


def parse_args() -> argparse.Namespace:
    p = argparse.ArgumentParser(description="Scraper de estatus de vuelos OMA Mazatlán (Llegadas/Salidas).")
    p.add_argument("--url", default=DEFAULT_URL, help="URL de la página de estatus de vuelos.")
    p.add_argument("--output", default="data/vuelos_oma_mzt.xlsx", help="Ruta del Excel de salida.")
    p.add_argument("--headful", action="store_true", help="Ejecutar con navegador visible (no headless).")
    p.add_argument("--timeout", type=int, default=25, help="Timeout base (segundos) para waits.")
    return p.parse_args()


def run() -> None:
    args = parse_args()

    out_path = Path(args.output)
    out_path.parent.mkdir(parents=True, exist_ok=True)

    scraper = OMAFlightScraper(
        url=args.url,
        headless=not args.headful,
        timeout_seconds=args.timeout,
    )

    try:
        result: ScrapeResult = scraper.scrape_all()
    finally:
        scraper.close()

    store = ExcelStore(out_path)
    store.append_flights(
        salidas=result.salidas,
        llegadas=result.llegadas,
        dedupe=True,  # recomendado para histórico
    )

    print(f"✅ Listo. Guardado histórico en: {out_path.resolve()}")
    print(f"   - Salidas nuevas:  {len(result.salidas)}")
    print(f"   - Llegadas nuevas: {len(result.llegadas)}")


if __name__ == "__main__":
    run()
