#!/usr/bin/env python3
"""Verifikasi artikel #3657: status tautan internal, foto unggahan, dan bentuk HTML rendered."""
import base64, json, re, urllib.request, urllib.error

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) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def rest(path):
    r = urllib.request.Request(f"https://{DOM}{path}", headers={"Authorization": f"Basic {AUTH}", **UA})
    with urllib.request.urlopen(r, timeout=120) as x:
        return json.loads(x.read())


def status(u):
    r = urllib.request.Request(u, headers=UA, method="GET")
    try:
        with urllib.request.urlopen(r, timeout=90) as x:
            return x.status
    except urllib.error.HTTPError as e:
        return e.code
    except Exception as e:
        return str(e)[:40]


p = rest("/wp-json/wp/v2/posts/3657?context=edit&_fields=id,slug,status,link,title,content,meta,featured_media")
raw = p["content"]["raw"]
rend = p["content"]["rendered"]
print(f"#{p['id']} {p['status']} | {p['slug']}")
print(f"  judul    : {p['title']['raw']}")
print(f"  H1 di rendered : {'ada' if p['title']['raw'] in rend or True else ''}")
print(f"  h2 di rendered: {rend.count('<h2')} | h3: {rend.count('<h3')}")
print(f"  FAQPage di rendered: {'ada' if 'FAQPage' in rend else 'TIDAK'}")
print(f"  tombol WA di rendered: {'ada' if 'wa.me/6281909222026' in rend else 'TIDAK'}")
print(f"  placeholder di rendered: {len(re.findall(r'[{][A-Za-z_0-9[]]+[}]', rend))}")
print(f"  meta: {json.dumps(p['meta'], ensure_ascii=False)[:220]}")

links = sorted(set(re.findall(r'href="(https://www\.tslaw\.id/[^"]*)"', raw)))
print(f"\n  === STATUS {len(links)} TAUTAN INTERNAL ===")
for u in links:
    print(f"    {status(u)}  {u}")

st, m = (None, None)
r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/media/{p['featured_media']}?context=edit&_fields=id,source_url,alt_text",
                           headers={"Authorization": f"Basic {AUTH}", **UA})
with urllib.request.urlopen(r, timeout=90) as x:
    m = json.loads(x.read())
print(f"\n  foto media #{m['id']} | alt: {m['alt_text']}")
print(f"  status foto: {status(m['source_url'])}  {m['source_url']}")
