#!/usr/bin/env python3
"""TSC: baca 3 artikel teratas yang perlu diperpanjang + query GSC masing-masing, sebagai bahan menulis."""
import base64, 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"}
spec = importlib.util.spec_from_file_location("cfg_tsc", f"{WS}/cfg_tsc.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
AUTH = base64.b64encode(f'{m.CFG["user"]}:{m.CFG["pass"]}'.encode()).decode()
BACKUP = f"{WS}/tsc_pemulihan/salinan_tipis"
os.makedirs(BACKUP, exist_ok=True)

SLUG = ["kenapa-dr-avril-the-skin-code-clinic", "dokter-kulit-kelamin-sidoarjo",
        "klinik-dni-sidoarjo-spesialis-kulit-dan-penyakit-kelamin"]

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": ["page", "query"],
    "rowLimit": 5000}).execute().get("rows", [])


def rest(p):
    r = urllib.request.Request(f'https://{m.CFG["domain"]}{p}', headers={"Authorization": f"Basic {AUTH}", **UA})
    with urllib.request.urlopen(r, timeout=150) as x:
        return json.loads(x.read())


for s in SLUG:
    d = rest(f"/wp-json/wp/v2/posts?slug={s}&context=edit&_fields=id,slug,link,title,content")
    if not d:
        print(f"\n### /{s} → tidak ditemukan")
        continue
    p = d[0]
    raw = p["content"]["raw"]
    open(f"{BACKUP}/post_{p['id']}.txt", "w").write(raw)
    teks = re.sub(r"\s+", " ", html.unescape(re.sub(r"<[^>]+>", " ", raw)))
    print(f"\n{'='*90}\n### #{p['id']} /{s}  ({len(teks.split())} kata)")
    print("HEADING:", [html.unescape(re.sub(r"<[^>]+>", "", x)).strip()[:60] for x in re.findall(r"<h[23][^>]*>(.*?)</h[23]>", raw, re.S)])
    print("PARAGRAF PERTAMA:", teks[:300])
    print("PARAGRAF TERAKHIR:", teks[-300:])
    print("TAUTAN:", sorted(set(re.findall(r'href="https://www\.theskincodeclinic\.com(/[^"]*)"', raw)))[:8])
    print("QUERY GSC:")
    cocok = [r for r in rows if r["keys"][0].replace("https://www.theskincodeclinic.com", "").rstrip("/") == "/" + s]
    cocok.sort(key=lambda r: -r["impressions"])
    for r in cocok[:8]:
        print(f"   imp {r['impressions']:>4} | klik {r['clicks']:>2} | pos {round(r['position'],1):>5} | {r['keys'][1][:56]}")
