#!/usr/bin/env python3
"""Peluang artikel TSC: kueri berimpresi yang hanya dilayani homepage/tag (belum ada halaman khusus)."""
import json
import os
import 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": 3000}).execute().get("rows", [])
h = gsc.searchanalytics().query(siteUrl=SITE, body={
    "startDate": AWAL.isoformat(), "endDate": AKHIR.isoformat(), "dimensions": ["query", "page"],
    "rowLimit": 8000}).execute().get("rows", [])

peta = {}
for r in h:
    peta.setdefault(r["keys"][0], []).append(r["keys"][1].replace(SITE.rstrip("/"), "") or "/")

KOTA = ("krian", "sidoarjo", "surabaya", "mojokerto", "wringinanom", "balongbendo", "tanggulangin",
        "candi", "buduran", "terdekat", "dekat", "jam", "buka", "biaya", "harga", "jadwal", "alamat",
        "no telp", "nomor", "lokasi", "praktek", "praktik")

kand = []
for r in q:
    k = r["keys"][0].lower()
    if r["impressions"] < 25 or any(x in k for x in KOTA):
        continue
    hal = peta.get(r["keys"][0], [])
    khusus = [u for u in hal if u not in ("/", "") and not u.startswith("/tag/")
              and not u.startswith("/category/")]
    if khusus:
        continue
    kand.append((int(r["impressions"]), round(r["position"], 1), int(r["clicks"]), r["keys"][0], hal[:2]))

kand.sort(key=lambda x: -x[0])
print(f"kueri total {len(q)} · kandidat tanpa halaman khusus: {len(kand)}\n")
for imp, pos, klik, k, hal in kand[:28]:
    print(f"{imp:>5} tayang | {klik:>3} klik | pos {pos:>5} | «{k}» -> {hal}")
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_info.json", "w"), ensure_ascii=False, indent=1)
