#!/usr/bin/env python3
"""Dump HTML tables of a Google support page as row/column text."""
import asyncio
import json
import sys

from playwright.async_api import async_playwright

UA = ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) "
      "Chrome/124.0.0.0 Safari/537.36")

AST = """() => {
  const out = [];
  document.querySelectorAll('table').forEach((t, ti) => {
    const rows = [];
    t.querySelectorAll('tr').forEach(r => {
      const cells = [...r.querySelectorAll('th,td')].map(c => c.innerText.replace(/\\s+/g,' ').trim().slice(0,80));
      if (cells.length) rows.push(cells);
    });
    out.push({table: ti, rows: rows.slice(0, 12)});
  });
  return out;
}"""


async def run(url, out):
    async with async_playwright() as pw:
        br = await pw.chromium.launch()
        ctx = await br.new_context(user_agent=UA, locale="id-ID")
        page = await ctx.new_page()
        await page.goto(url, wait_until="domcontentloaded", timeout=60000)
        await page.wait_for_timeout(4000)
        data = await page.evaluate(AST)
        await br.close()
    with open(out, "w", encoding="utf-8") as fh:
        fh.write(json.dumps(data, indent=1, ensure_ascii=False))
    print("->", out)


if __name__ == "__main__":
    sys.exit(asyncio.run(run(sys.argv[2], sys.argv[1])))
