#!/usr/bin/env python3
"""TSLaw: verifikasi akhir artikel #3532 (draft) — berkas, foto, schema, tautan, meta."""
import base64, json, re, urllib.request

DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124 Safari/537.36"}
PID = 3532


def get(path, api=True):
    base = f"https://{DOM}{path}" if api else path
    h = {"Authorization": f"Basic {AUTH}", **UA} if api else UA
    with urllib.request.urlopen(urllib.request.Request(base, headers=h), timeout=120) as x:
        return x.status, x.read(), dict(x.headers)


st, body, hdr = get(f"/wp-json/wp/v2/posts/{PID}?context=edit")
p = json.loads(body)
raw = p["content"]["raw"]
judul = p["title"]["raw"]
teks = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", raw, flags=re.S | re.I)
kata = len([w for w in re.split(r"\s+", re.sub(r"<[^>]+>", " ", teks)) if w])

print(f"judul     : {judul}")
print(f"status    : {p['status']} | slug {p['slug']} | id {p['id']}")
print(f"kata      : {kata} | h2 {raw.count('<h2>')} | h3 {raw.count('<h3>')}")
print(f"kategori  : {p['categories']} | tag {p['tags']} | foto {p['featured_media']}")
m = p["meta"]
print(f"keyphrase : {m.get('_yoast_wpseo_focuskw')}")
print(f"judul SEO : {m.get('_yoast_wpseo_title')} ({len(m.get('_yoast_wpseo_title') or '')} char)")
print(f"meta desc : {m.get('_yoast_wpseo_metadesc')} ({len(m.get('_yoast_wpseo_metadesc') or '')} char)")
print(f"keyphrase ada di meta desc (case-insensitive): "
      f"{m.get('_yoast_wpseo_focuskw', '').lower() in m.get('_yoast_wpseo_metadesc', '').lower()}")

print("\n--- skema FAQ ---")
snip = re.search(r'<script type="application/ld\+json">(.*?)</script>', raw, re.S)
data = json.loads(snip.group(1))
print(f"@type: {data['@type']} | jumlah pertanyaan: {len(data['mainEntity'])}")
for q in data["mainEntity"]:
    print(f"   - {q['name']}")

print("\n--- tautan internal ---")
for u in sorted(set(re.findall(r'href="(https://www\.tslaw\.id/[^"]*)"', raw))):
    print(f"   {u}")

print("\n--- tombol WA ---")
wa = re.findall(r'wa\.me/(\d+)', raw)
print(f"   wa.me/{wa[0]} ({len(wa)} tombol)")

ENTRI1 = 'selengkapnya ada di <a href="https://www.tslaw.id/">beranda TS Law</a>'
print("\n--- cek penutup & entri 1 ---")
print(f"   penyebutan Tito Suprianto Law Firm: {raw.count('Tito Suprianto Law Firm')} kali")
print(f"   entri 1 (h3 pertama): {re.findall(r'<h3>(.{0,60})', raw)[0] if '<h3>' in raw else '-'}")
print(f"   tautan beranda di dalam entri 1: {'ya' if ENTRI1.lower() in raw.lower() else 'TIDAK'}")
print(f"   FAQ 5 pertanyaan: {len(re.findall(r'<h3>', raw)) - 8} (h3 total {raw.count('<h3>')})")
print(f"   karakter CJK: {len(re.findall(r'[一-鿿가-힣]', raw))}")

print("\n--- foto (URL publik) ---")
st, body, hdr = get("https://www.tslaw.id/wp-content/uploads/2026/09/pengacara-sengketa-tanah-surabaya.webp", api=False)
print(f"   HTTP {st} | {hdr.get('Content-Type')} | {len(body)//1024} KB")
from io import BytesIO
from PIL import Image
im = Image.open(BytesIO(body))
print(f"   ukuran {im.size} | format {im.format}")
