#!/usr/bin/env python3
"""Status index 20 halaman StudioSoft teratas (GSC URL Inspection API)."""
import json, os, time, urllib.request
from datetime import date, timedelta
from google.auth.transport.requests import Request
from google.oauth2 import service_account
from googleapiclient.discovery import build

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)
S = "https://studiosoft.id/"
e = date.today() - timedelta(days=2)
S90, END = (e - timedelta(days=89)).isoformat(), e.isoformat()
rows = gsc.searchanalytics().query(siteUrl=S, body={"startDate": S90, "endDate": END, "dimensions": ["page"],
                                                   "rowLimit": 20}).execute().get("rows", [])
creds.refresh(Request())
from collections import Counter
hasil = Counter()
print(f"{'status':<34} {'crawl':<11} impresi  url")
for r in rows:
    u = r["keys"][0]
    body = json.dumps({"inspectionUrl": u, "siteUrl": S}).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["inspectionResult"]["indexStatusResult"]
        state = st.get("coverageState")
        hasil[state] += 1
        print(f"{state:<34} {str(st.get('lastCrawlTime'))[:10]:<11} {int(r['impressions']):>7}  {u.replace(S,'')[:56]}")
    except Exception as ex:
        print(f"{'ERROR ' + str(ex)[:26]:<34} {'-':<11} {int(r['impressions']):>7}  {u.replace(S,'')[:56]}")
    time.sleep(0.2)
print("\nringkasan:", dict(hasil))
