#!/usr/bin/env python3
"""Daftar halaman tetap StudioSoft + halaman layanan yang ada, dan konversi GA4 per halaman pendaratan."""
import base64, json, os, re, time, urllib.request
from google.oauth2 import service_account
from googleapiclient.discovery import build

KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()


def wp(path):
    r = urllib.request.Request(S + path, headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=150) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return []


print("=== 13 HALAMAN TETAP (page) di studiosoft.id ===")
pages = wp("/wp-json/wp/v2/pages?per_page=100&status=publish&_fields=id,link,title")
for p in sorted(pages, key=lambda x: x["link"]):
    print(f"  #{p['id']:>5} {p['link'].replace(S, ''):<58} {p['title']['rendered'][:40]}")

print("\n=== apakah ada halaman layanan untuk tema celah? ===")
CEK = {"google ads / iklan": r"ads|iklan|adwords|ppc",
       "social media": r"social-media|sosial-media|sosmed|kelola.*instagram",
       "software / aplikasi": r"software|aplikasi|mobile|android|app-development",
       "maintenance": r"maintenance|perawatan",
       "training / pelatihan": r"training|pelatihan|kursus|workshop|bootcamp",
       "konsultan internet marketing": r"konsultan|consultant|internet-marketing"}
semua = [(p["link"].replace(S, ""), p["title"]["rendered"], p["id"]) for p in pages]
for tema, pat in CEK.items():
    cocok = [s for s in semua if re.search(pat, s[0], re.I)]
    print(f"  {tema:<28} {'ADA: ' + str(cocok) if cocok else 'TIDAK ADA halaman'}")

# ── GA4: cari properti studiosoft lalu tarik konversi
print("\n=== GA4: daftar properti yang bisa diakses service account ===")
try:
    adm = build("analyticsadmin", "v1beta", credentials=service_account.Credentials.from_service_account_file(
        KEY, scopes=["https://www.googleapis.com/auth/analytics.readonly"]), cache_discovery=False)
    props = adm.properties().list(filter="parent:accounts/-", pageSize=50).execute().get("properties", [])
    if not props:
        accs = adm.accountSummaries().list().execute().get("accountSummaries", [])
        for a in accs:
            for p in a.get("propertySummaries", []):
                props.append({"name": p["property"], "displayName": p["displayName"]})
    for p in props:
        print(f"  {p['name']:<28} {p.get('displayName')}")
except Exception as e:
    print("  gagal:", str(e)[:200])
