#!/usr/bin/env python3
"""Kueri non-lokal TSC (tanpa nama kota/terdekat) dengan tayangan dan klik — peluang artikel isi."""
import json, os
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", "page"],
    "rowLimit": 5000}).execute().get("rows", [])
LOKAL = ("krian", "sidoarjo", "surabaya", "mojokerto", "terdekat", "dekat", "sekitar", "gresik")

gab = {}
for r in q:
    k = r["keys"][0]
    if any(x in k.lower() for x in LOKAL):
        continue
    d = gab.setdefault(k, {"tayang": 0, "klik": 0, "pos": [], "hal": set()})
    d["tayang"] += int(r["impressions"])
    d["klik"] += int(r["clicks"])
    d["pos"].append(r["position"])
    d["hal"].add(r["keys"][1])

print(f"kueri non-lokal: {len(gab)}\n")
print("=== 25 teratas menurut tayangan ===")
for k, d in sorted(gab.items(), key=lambda x: -x[1]["tayang"])[:25]:
    pos = sum(d["pos"]) / len(d["pos"])
    print(f"  {d['tayang']:>4} tayang | {d['klik']:>2} klik | pos {pos:>5.1f} | «{k}»")
    for u in list(d["hal"])[:1]:
        print(f"        halaman: {u.replace('https://www.theskincodeclinic.com', '')[:76]}")

print("\n=== yang menghasilkan klik ===")
for k, d in sorted(gab.items(), key=lambda x: -x[1]["klik"])[:15]:
    if d["klik"]:
        pos = sum(d["pos"]) / len(d["pos"])
        print(f"  {d['klik']:>2} klik | {d['tayang']:>4} tayang | pos {pos:>5.1f} | «{k}»")
json.dump({k: {"tayang": v["tayang"], "klik": v["klik"], "posisi": round(sum(v["pos"]) / len(v["pos"]), 1),
               "halaman": sorted(v["hal"])} for k, v in gab.items()},
          open(f"{WS}/drafts/tsc_kueri_nonlokal.json", "w"), ensure_ascii=False, indent=1)
