#!/usr/bin/env python3
"""Periksa satu URL DAS: status, status index GSC, dan keberadaannya di WordPress."""
import base64, importlib.util, json, os, re, time, urllib.error, urllib.request
from google.auth.transport.requests import Request
from google.oauth2 import service_account

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
URL = "https://dasindonesia.com/merawat-sistem-pendingin-mesin-radiator-cairan/"
DOM = "dasindonesia.com"
UA = {"User-Agent": "Mozilla/5.0"}


class TanpaAlih(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, *a, **k):
        return None


OP = urllib.request.build_opener(TanpaAlih)

print("=== 1. status URL ===")
for u in (URL, URL.rstrip("/")):
    try:
        with OP.open(urllib.request.Request(u, headers=UA), timeout=60) as x:
            print(f"   {x.status} · {u}")
    except urllib.error.HTTPError as e:
        print(f"   {e.code} → {e.headers.get('Location','-')[:70]} · {u}")
    except Exception as e:
        print(f"   GAGAL {str(e)[:40]} · {u}")
    time.sleep(0.5)

print("\n=== 2. ada di WordPress? ===")
spec = importlib.util.spec_from_file_location("cfg", f"{WS}/cfg_das.py")
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
CFG = m.CFG
AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
slug = URL.rstrip("/").split("/")[-1]
h = {"Authorization": f"Basic {AUTH}", **UA}
for jenis in ("posts", "pages"):
    try:
        r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/{jenis}?slug={slug}&context=edit&_fields=id,slug,link,status,date,modified,title,content", headers=h)
        d = json.loads(urllib.request.urlopen(r, timeout=90).read())
        for x in d:
            kata = len(re.sub(r"<[^>]+>", " ", x["content"]["raw"]).split())
            print(f"   {jenis}: #{x['id']} status={x['status']} · {x['date'][:10]} · diubah {x['modified'][:16]} · {kata} kata")
            print(f"      judul: {re.sub(r'<[^>]+>','',x['title']['raw'])[:80]}")
            print(f"      link : {x['link']}")
        if not d:
            print(f"   {jenis}: tidak ada dengan slug itu")
    except Exception as e:
        print(f"   {jenis} gagal: {str(e)[:60]}")

print("\n=== 3. status index GSC ===")
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())
body = json.dumps({"inspectionUrl": URL, "siteUrl": f"https://{DOM}/"}).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.loads(urllib.request.urlopen(req, timeout=60).read())
    idx = res.get("inspectionResult", {}).get("indexStatusResult", {})
    print(f"   {idx.get('coverageState', '?')} · verdict {idx.get('verdict', '?')} · crawl {str(idx.get('lastCrawlTime'))[:10]}")
    print(f"   robots: {idx.get('robotsTxtState')} · indexing: {idx.get('indexingState')}")
except Exception as e:
    print("   gagal:", str(e)[:80])
