#!/usr/bin/env python3
"""TSC: kumpulkan query GSC (90 hari) untuk memilih judul yang tepat + catat keadaan awal beranda."""
import base64, hashlib, html, json, os, re, time, urllib.request, urllib.error, importlib.util
from google.oauth2 import service_account
from googleapiclient.discovery import build

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

spec = importlib.util.spec_from_file_location("cfg_tsc", f"{WS}/cfg_tsc.py")
mod = importlib.util.module_from_spec(spec); spec.loader.exec_module(mod)
CFG = mod.CFG
AUTH = base64.b64encode(f'{CFG["user"]}:{CFG["pass"]}'.encode()).decode()

print("=== query GSC The Skin Code (90 hari) ===")
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.theskincodeclinic.com/", body={
    "startDate": "2026-06-28", "endDate": "2026-09-25", "dimensions": ["query"], "rowLimit": 5000}).execute().get("rows", [])
rows.sort(key=lambda r: -r["impressions"])
print(f"   {len(rows)} query")
for r in rows[:25]:
    print(f"   imp {r['impressions']:>4} | klik {r['clicks']:>2} | CTR {round(r['ctr']*100,1):>5}% | pos {round(r['position'],1):>5} | {r['keys'][0][:56]}")

KELUARGA = {"kulit (umum)": r"dokter kulit|klinik kulit|spesialis kulit", "kelamin": r"kelamin",
            "krian": r"krian", "sidoarjo": r"sidoarjo", "terdekat": r"terdekat",
            "merek": r"the skin code|skin code|dni|avril", "estetika": r"estetik|facial|laser|jerawat"}
print("\n=== ringkasan per keluarga kata kunci ===")
for nama, pola in KELUARGA.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"   {nama:<16} {len(cocok):>3} query | {imp:>5} impresi | {klik:>3} klik")

print("\n=== keadaan beranda sekarang (dicatat sebagai pembanding) ===")
st, d, h = 0, None, None
r = urllib.request.Request(f'https://www.{CFG["domain"]}/wp-json/wp/v2/pages/409?context=edit',
                           headers={"Authorization": f"Basic {AUTH}", **UA})
with urllib.request.urlopen(r, timeout=120) as x:
    d = json.loads(x.read())
raw = d.get("content", {}).get("raw", "")
print(f"   id halaman   : {d.get('id')} | slug: {d.get('slug')} | status: {d.get('status')}")
print(f"   panjang isi  : {len(raw)} karakter | sidik jari (hash): {hashlib.sha256(raw.encode()).hexdigest()[:16]}")
print(f"   meta keys    : {sorted((d.get('meta') or {}).keys())[:8]}")

hh = urllib.request.urlopen(urllib.request.Request(f'https://www.{CFG["domain"]}/?cek={int(time.time())}',
                                                 headers=UA), timeout=90).read().decode("utf-8", "replace")
t = re.search(r"<title>(.*?)</title>", hh, re.S)
md = re.search(r'<meta name="description" content="([^"]*)"', hh)
print(f"\n   judul live   : {html.unescape(t.group(1)).strip() if t else '-'}  ({(len(html.unescape(t.group(1)).strip()) if t else 0)} char)")
print(f"   meta live    : ({(len(md.group(1)) if md else 0)} char) {html.unescape(md.group(1))[:100] if md else '-'}")
open(f"{WS}/tsc_pemulihan_beranda_awal.json", "w").write(json.dumps(
    {"id": 409, "hash_isi": hashlib.sha256(raw.encode()).hexdigest(), "panjang_isi": len(raw),
     "judul_live": html.unescape(t.group(1)).strip() if t else None,
     "meta_live": html.unescape(md.group(1)) if md else None}, indent=1))
print(f"\n   salinan keadaan awal: tsc_pemulihan_beranda_awal.json")
