#!/usr/bin/env python3
"""Cari peluang terbaik untuk artikel baru TSC: kueri berimpresi besar, posisi masih bisa dikejar,
dan belum punya halaman khusus."""
import json, os, re
from datetime import date, timedelta

from google.oauth2 import service_account
from googleapiclient.discovery import build

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
SITE = "https://www.theskincodeclinic.com/"
creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
gsc = build("webmasters", "v3", credentials=creds, cache_discovery=False)
AKHIR = date.today() - timedelta(days=2)
AWAL = AKHIR - timedelta(days=89)

q = gsc.searchanalytics().query(siteUrl=SITE, body={
    "startDate": AWAL.isoformat(), "endDate": AKHIR.isoformat(), "dimensions": ["query"],
    "rowLimit": 2000}).execute().get("rows", [])
h = gsc.searchanalytics().query(siteUrl=SITE, body={
    "startDate": AWAL.isoformat(), "endDate": AKHIR.isoformat(), "dimensions": ["query", "page"],
    "rowLimit": 5000}).execute().get("rows", [])

# halaman yang sudah melayani tiap kueri
peta = {}
for r in h:
    peta.setdefault(r["keys"][0], []).append(r["keys"][1])

print(f"kueri: {len(q)}\n")
print("=== 30 kueri berimpresi terbesar ===")
for r in sorted(q, key=lambda x: -x["impressions"])[:30]:
    k = r["keys"][0]
    hal = sorted(peta.get(k, []), key=lambda u: -len(u))[:1]
    print(f"  {r['impressions']:>5} tayang | {int(r['clicks']):>3} klik | pos {r['position']:>5.1f} | «{k}»")
    if hal:
        print(f"        halaman: {hal[0].replace('https://www.theskincodeclinic.com', '')[:78]}")

print("\n=== kandidat: impresi >= 30, posisi 3-15, dan kueri mengandung kota/layanan ===")
KOTA = ["krian", "sidoarjo", "surabaya", "mojokerto", "wringinanom", "balongbendo", "tanggulangin",
        "candi", "buduran", "terdekat", "dekat"]
kand = []
for r in q:
    k = r["keys"][0].lower()
    if r["impressions"] >= 30 and 3 <= r["position"] <= 15 and any(x in k for x in KOTA):
        kand.append((int(r["impressions"]), round(r["position"], 1), int(r["clicks"]), r["keys"][0],
                     peta.get(r["keys"][0], [])))
kand.sort(reverse=True)
for imp, pos, klik, k, hal in kand[:20]:
    print(f"  {imp:>5} tayang | {klik:>3} klik | pos {pos:>5} | «{k}»")
    for u in hal[:2]:
        print(f"        → {u.replace('https://www.theskincodeclinic.com', '')[:80]}")
json.dump([{"kueri": k, "tayang": i, "posisi": p, "klik": c, "halaman": h} for i, p, c, k, h in kand],
          open(f"{WS}/drafts/tsc_peluang_keyword.json", "w"), ensure_ascii=False, indent=1)
