#!/usr/bin/env python3
"""Pemeriksaan mendalam artikel StudioSoft #3535: isi, sub-judul, penutup, meta, gambar, tautan, dan data GSC."""
import json, os, re, urllib.request
from datetime import date, timedelta
from google.oauth2 import service_account
from googleapiclient.discovery import build

UA = {"User-Agent": "Mozilla/5.0"}
SLUG = "9-contoh-konten-digital-marketing-rumah-sakit-yang-edukatif-dan-tetap-etis"
d = json.loads(urllib.request.urlopen(urllib.request.Request(
    f"https://studiosoft.id/wp-json/wp/v2/posts?slug={SLUG}", headers=UA), timeout=90).read())[0]
isi = d["content"]["rendered"]

print("=== sub-judul ===")
for mo in re.finditer(r"<h([23])[^>]*>(.*?)</h\1>", isi, re.S):
    print(f"   H{mo.group(1)}: {re.sub('<[^>]+>', '', mo.group(2)).strip()[:80]}")

print("\n=== tiga blok terakhir ===")
blok = re.findall(r"<(?:p|h2|h3|ul|ol)[^>]*>.*?</(?:p|h2|h3|ul|ol)>", isi, re.S)
for b in blok[-3:]:
    print("   •", re.sub(r"\s+", " ", re.sub("<[^>]+>", " ", b)).strip()[:220])

print("\n=== gambar unggulan ===")
fm = d.get("featured_media")
if fm:
    m = json.loads(urllib.request.urlopen(urllib.request.Request(
        f"https://studiosoft.id/wp-json/wp/v2/media/{fm}", headers=UA), timeout=90).read())
    print(f"   #{fm} · {m['source_url']}")
    print(f"   alt: {m.get('alt_text') or '(kosong)'}")
    print(f"   ukuran: {m.get('media_details', {}).get('width')}x{m.get('media_details', {}).get('height')}")

print("\n=== tautan internal: apakah hidup? ===")
for u in sorted(set(re.findall(r'href="(https://studiosoft\.id/[^"]+)"', isi))):
    try:
        r = urllib.request.Request(u, headers=UA, method="GET")
        with urllib.request.urlopen(r, timeout=45) as x:
            st = x.status
    except Exception as e:
        st = str(e)[:30]
    print(f"   {st} · {u.replace('https://studiosoft.id', '')}")

print("\n=== data GSC untuk halaman ini ===")
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)
rows = gsc.searchanalytics().query(siteUrl="https://studiosoft.id/", body={
    "startDate": awal.isoformat(), "endDate": akhir.isoformat(),
    "dimensions": ["page", "query"], "rowLimit": 2000,
    "dimensionFilterGroups": [{"filters": [{"dimension": "page", "operator": "equals",
                                            "expression": d["link"]}]}]}).execute().get("rows", [])
if not rows:
    print("   90 hari: tidak ada tayangan sama sekali untuk halaman ini")
else:
    total_t = sum(int(r["impressions"]) for r in rows)
    total_k = sum(int(r["clicks"]) for r in rows)
    print(f"   90 hari: {total_t} tayangan · {total_k} klik")
    for r in sorted(rows, key=lambda z: -z["impressions"])[:8]:
        print(f"      {int(r['impressions']):>4} tayang · {int(r['clicks'])} klik · "
              f"pos {round(r['position'],1)} · «{r['keys'][1]}»")
