#!/usr/bin/env python3
"""DAS: uji klik → tangkap semua permintaan pengukuran → cek GA4 waktu nyata."""
import asyncio, json, sys, time, urllib.request, urllib.error

UJI = "https://dasindonesia.com/bengkel-mercy-surabaya/"
TOKEN = "/home/mantapman/.hermes/profiles/suwarno/workspace/seo-oauth/google_token_seo.json"
GA4 = "properties/443064659"


def realtime():
    from google.oauth2.credentials import Credentials
    from google.auth.transport.requests import Request
    c = Credentials.from_authorized_user_file(TOKEN, ["https://www.googleapis.com/auth/analytics.readonly"])
    if not c.valid:
        c.refresh(Request()); open(TOKEN, "w").write(c.to_json())
    H = {"Authorization": f"Bearer {c.token}", "Content-Type": "application/json"}
    isi = {"dimensions": [{"name": "eventName"}, {"name": "unifiedPagePathScreen"}],
           "metrics": [{"name": "eventCount"}], "limit": 50}
    r = urllib.request.Request(f"https://analyticsdata.googleapis.com/v1beta/{GA4}:runRealtimeReport",
                               data=json.dumps(isi).encode(), headers=H)
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            return json.loads(x.read())
    except Exception as e:
        return {"err": str(e)[:120]}


async def main():
    from playwright.async_api import async_playwright
    minta = []
    async with async_playwright() as pw:
        br = await pw.chromium.launch()
        ctx = await br.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36")
        hal = await ctx.new_page()

        async def tangkap(req):
            u = req.url
            if any(x in u for x in ("collect", "google-analytics", "doubleclick", "analytics.google")):
                minta.append((req.method, u))
        hal.on("request", lambda r: asyncio.create_task(tangkap(r)))

        await hal.goto(UJI, wait_until="domcontentloaded", timeout=180000)
        await hal.wait_for_timeout(7000)
        n = await hal.evaluate("document.querySelectorAll(\"a[onclick*='klik_wa']\").length")
        print(f"   tombol berpelacak: {n}")
        await hal.evaluate("""
            const t = document.querySelectorAll("a[onclick*='klik_wa']");
            if (t.length) { t[0].setAttribute('target','_blank'); t[0].click(); }
        """)
        await hal.wait_for_timeout(8000)
        await br.close()

    print("\n=== permintaan pengukuran yang tertangkap ===")
    for metode, u in minta:
        tanda = "✅" if "klik_wa" in u else "  "
        print(f"   {tanda} {metode:<5} {u[:120]}")
    print(f"   total: {len(minta)} | memuat klik_wa: {sum(1 for _, u in minta if 'klik_wa' in u)}")


asyncio.run(main())
print("\n=== menunggu 75 detik, lalu cek GA4 waktu nyata ===")
time.sleep(75)
d = realtime()
if "err" in d:
    print("   gagal:", d)
else:
    for r in d.get("rows", []):
        e = r["dimensionValues"][0]["value"]
        h = r["dimensionValues"][1]["value"]
        print(f"   {r['metricValues'][0]['value']:>4}x {e:<22} {h[:60]}")
    if not d.get("rows"):
        print("   belum ada aktivitas")
