#!/usr/bin/env python3
"""TSLaw: cari topik listikel berikutnya berdasarkan permintaan nyata di GSC + minat GA4."""
import os, re
from google.oauth2 import service_account
from googleapiclient.discovery import build

KEY = os.path.expanduser("~/.hermes/gsc_service_account.json")
gsc = build("searchconsole", "v1", credentials=service_account.Credentials.from_service_account_file(
    KEY, scopes=["https://www.googleapis.com/auth/webmasters.readonly"]), cache_discovery=False)
rows = gsc.searchanalytics().query(siteUrl="https://www.tslaw.id/", body={
    "startDate": "2026-06-28", "endDate": "2026-09-25", "dimensions": ["query"], "rowLimit": 5000}).execute().get("rows", [])

TOPIK = {
    "sertifikat / sengketa tanah": r"tanah|sertifikat|sengketa tanah|waris",
    "pendirian PT / CV / badan usaha": r"\bpt\b|\bcv\b|badan usaha|pendirian usaha|pt perorangan",
    "legalitas usaha makanan (PIRT/BPOM/Halal/NIB)": r"pirt|bpom|halal|\bnib\b|legalitas usaha|izin usaha",
    "merek dagang / HKI": r"merek|hki|hak cipta|paten",
    "kontrak / perjanjian bisnis": r"kontrak|perjanjian|kesepakatan",
    "utang / piutang": r"utang|piutang|tagih",
    "perceraian / keluarga": r"cerai|nikah|harta gono|asuh|waris",
    "pidana / penipuan": r"pidana|penipuan|lapor polisi|kriminal",
}
print("=== permintaan per topik (GSC 90 hari) ===")
for nama, pola in TOPIK.items():
    cocok = [r for r in rows if re.search(pola, r["keys"][0], re.I)]
    imp = sum(r["impressions"] for r in cocok); klik = sum(r["clicks"] for r in cocok)
    print(f"\n  {nama}: {len(cocok)} query | {imp} impresi | {klik} klik")
    for r in sorted(cocok, key=lambda x: -x["impressions"])[:4]:
        print(f"     imp {r['impressions']:>3} | klik {r['clicks']} | pos {round(r['position'],1):>5} | {r['keys'][0][:52]}")

print("\n=== artikel yang sudah ada di situs (hindari dobel) ===")
import base64, json, time, urllib.request
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()


def rest(path):
    r = urllib.request.Request(f"https://tslaw.id{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(3)
    return []


d = rest("/wp-json/wp/v2/posts?per_page=100&_fields=id,link,title")
if isinstance(d, list):
    print(f"  total {len(d)} artikel")
    for p in d[:40]:
        print(f"     #{p['id']:>5} {p['link'].replace('https://www.tslaw.id', '')[:60]}")
