#!/usr/bin/env python3
"""Cek status index halaman kunci DAS + halaman yang kehilangan impresi."""
import json, os, time, urllib.request, urllib.error
from google.auth.transport.requests import Request
from google.oauth2 import service_account

creds = service_account.Credentials.from_service_account_file(os.path.expanduser("~/.hermes/gsc_service_account.json"),
                                                              scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
creds.refresh(Request())
SITE = "https://dasindonesia.com/"

URLS = [
    "https://dasindonesia.com/",
    "https://dasindonesia.com/bengkel-spesialis-nissan-surabaya/",
    "https://dasindonesia.com/bengkel-spesialis-matic-surabaya/",
    "https://dasindonesia.com/bengkel-mobil-bmw-mercy-surabaya/",
    "https://dasindonesia.com/bengkel-spesialis-lexus-di-surabaya/",
    "https://dasindonesia.com/bengkel-spesialis-alphard-surabaya/",
    "https://dasindonesia.com/bengkel-toyota-di-jagir-surabaya-solusi-terbaik-untuk-perawatan-kendaraan-anda/",
    "https://dasindonesia.com/bengkel-mobil-alphard-di-surabaya-spesialis-perawatan-mpv-premium/",
    "https://dasindonesia.com/7-masalah-umum-mesin-alphard-dan-cara-mengatasinya/",
]

print("=== STATUS INDEX HALAMAN KUNCI DAS ===")
for u in URLS:
    body = json.dumps({"inspectionUrl": u, "siteUrl": SITE}).encode()
    req = urllib.request.Request("https://searchconsole.googleapis.com/v1/urlInspection/index:inspect", data=body,
                                 headers={"Authorization": f"Bearer {creds.token}", "Content-Type": "application/json"})
    try:
        res = json.load(urllib.request.urlopen(req, timeout=60))
        st = res.get("inspectionResult", {}).get("indexStatusResult", {})
        print(f"  {st.get('coverageState'):<32} | crawl {str(st.get('lastCrawlTime'))[:10]} | {u.replace('https://dasindonesia.com','')}")
    except urllib.error.HTTPError as e:
        print(f"  ERROR {e.code} | {u}")
    time.sleep(0.3)

# halaman dengan penurunan impresi terbesar (90d terakhir 28d vs sebelumnya)
from googleapiclient.discovery import build
gsc = build("webmasters", "v3", credentials=creds, cache_discovery=False)
from datetime import date, timedelta
e = date.today() - timedelta(days=2)


def pg(a, b):
    return gsc.searchanalytics().query(siteUrl=SITE, body={"startDate": a, "endDate": b, "dimensions": ["page"],
                                                           "rowLimit": 300}).execute().get("rows", [])


now = {r["keys"][0]: r for r in pg((e - timedelta(days=27)).isoformat(), e.isoformat())}
old = {r["keys"][0]: r for r in pg((e - timedelta(days=55)).isoformat(), (e - timedelta(days=28)).isoformat())}
print("\n=== PENURUNAN IMPRESI TERBESAR (28d vs 28d sebelumnya) ===")
rows = []
for u, o in old.items():
    n = now.get(u, {"impressions": 0, "clicks": 0, "position": 0})
    if o["impressions"] >= 100:
        rows.append((o["impressions"] - n["impressions"], o["impressions"], n["impressions"],
                     o["clicks"], n["clicks"], o["position"], n.get("position", 0), u))
for d, oi, ni, oc, nc, op, np_, u in sorted(rows, reverse=True)[:15]:
    print(f"  -{int(d):>5} imp | {int(oi):>5}→{int(ni):<5} | klik {int(oc):>3}→{int(nc):<3} | pos {op:>4.1f}→{np_:<4.1f} | {u.replace('https://dasindonesia.com','')[:70]}")
