#!/usr/bin/env python3
"""DAS: (1) bagaimana GA4/GTM terpasang di situs, (2) apakah ada wadah GTM yang bisa dipakai."""
import json, re, urllib.request, urllib.error, importlib.util

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
WS = "/home/mantapman/.hermes/profiles/atun/workspace"

print("=== 1. skrip pelacak di halaman DAS ===")
for u in ("/", "/bengkel-spesialis-nissan-surabaya/"):
    try:
        h = urllib.request.urlopen(urllib.request.Request(f"https://dasindonesia.com{u}", headers=UA), timeout=120).read().decode("utf-8", "replace")
        gtm = sorted(set(re.findall(r"GTM-[A-Z0-9]+", h)))
        ga4 = sorted(set(re.findall(r"G-[A-Z0-9]{8,}", h)))
        ua_ = sorted(set(re.findall(r"UA-\d+-\d+", h)))
        skrip = sorted(set(re.findall(r"(?:src|href)=\"([^\"]*(?:googletagmanager|google-analytics|gtag)[^\"]*)\"", h)))
        print(f"\n   {u}")
        print(f"      GTM  : {gtm or 'tidak ada'}")
        print(f"      GA4  : {ga4 or 'tidak ada'}")
        print(f"      UA   : {ua_ or 'tidak ada'}")
        print(f"      skrip: {skrip[:4]}")
        for pola in (r"gtag\('config'[^)]*\)", r"dataLayer\s*=\s*\[[^\]]{0,80}", r"fbq\('init'[^)]*\)"):
            mm = re.findall(pola, h)
            if mm:
                print(f"      jejak: {mm[:2]}")
    except Exception as e:
        print(f"   {u}: gagal {str(e)[:60]}")

print("\n=== 2. wadah GTM yang bisa diakses service account ===")
try:
    from google.oauth2 import service_account
    from googleapiclient.discovery import build
    KUNCI = None
    for kandidat in (f"{WS}/gtm_sa.json", f"{WS}/.gtm_sa.json", f"{WS}/service_account.json"):
        try:
            open(kandidat).read(); KUNCI = kandidat; break
        except Exception:
            pass
    if not KUNCI:
        print("   kunci service account tidak ditemukan di workspace — cari di tempat lain")
        import glob
        for f in glob.glob("/home/mantapman/.hermes/profiles/*/workspace/*.json") + glob.glob("/home/mantapman/.hermes/profiles/*/*.json"):
            try:
                d = json.load(open(f))
                if isinstance(d, dict) and d.get("type") == "service_account":
                    print("   kandidat:", f, "|", d.get("client_email", "")[:60])
            except Exception:
                pass
    else:
        creds = service_account.Credentials.from_service_account_file(
            KUNCI, scopes=["https://www.googleapis.com/auth/tagmanager.readonly"])
        svc = build("tagmanager", "v2", credentials=creds)
        akun = svc.accounts().list().execute()
        for a in akun.get("account", []):
            print(f"   akun: {a['name']} ({a['accountId']})")
            for c in svc.accounts().containers().list(parent=a["path"]).execute().get("container", []):
                print(f"      wadah: {c['name']:<40} {c['publicId']} | {c.get('domainName', '')}")
except Exception as e:
    print("   gagal:", str(e)[:200])
