#!/usr/bin/env python3 """Importa baselines KXL do TXT para data/wc/team_baselines.json.""" from __future__ import annotations import argparse import json import re import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent DEFAULT_OUT = ROOT / "data" / "wc" / "team_baselines.json" def parse_kxl_txt(path: Path) -> list[dict]: raw = path.read_text(encoding="utf-8") raw = re.sub(r":\s*0+(\d+)", r": \1", raw) chunks: list[dict] = [] for part in re.split(r"\]\s*\[", raw.strip()): part = part.strip() if not part.startswith("["): part = "[" + part if not part.endswith("]"): part = part + "]" chunks.extend(json.loads(part)) seen: dict[str, dict] = {} for entry in chunks: name = entry.get("selecao", "") if name and name not in seen: seen[name] = entry return list(seen.values()) def main() -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("source", type=Path, help="Arquivo TXT com arrays JSON KXL") parser.add_argument("-o", "--output", type=Path, default=DEFAULT_OUT) args = parser.parse_args() if not args.source.is_file(): print(f"Arquivo não encontrado: {args.source}", file=sys.stderr) return 1 teams = parse_kxl_txt(args.source) args.output.parent.mkdir(parents=True, exist_ok=True) payload = {"version": 1, "source": "kxl_copa_2026", "teams": teams} args.output.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") print(f"Importadas {len(teams)} seleções -> {args.output}") return 0 if __name__ == "__main__": raise SystemExit(main())