#!/usr/bin/env python3
"""DMark: cari dari mana isi beranda berasal — blok rujukan (reusable blocks) atau template."""
import base64, json, re, time, urllib.request, urllib.error, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_dmark", f"{WS}/cfg_dmark.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
CFG = m.CFG
DOM = CFG.get("domain", "www.dmark.id")
AUTH = base64.b64encode(f'{CFG["user"]}:{CFG["pass"]}'.encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}


def rest(p):
    r = urllib.request.Request(f"https://{DOM}{p}", headers={"Authorization": f"Basic {AUTH}", **UA})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return []


raw = rest("/wp-json/wp/v2/pages/2034?context=edit&_fields=content")["content"]["raw"]
print("=== 40 baris pertama isi beranda ===")
for baris in raw.split("\n")[:40]:
    print("   " + baris[:150])

print("\n=== rujukan blok yang dipakai ===")
refs = re.findall(r'wp:block\s*\{[^}]*"ref":(\d+)', raw)
print("   ref:", refs[:20])
print("   jenis blok teratas:", sorted(set(re.findall(r"<!--\s*wp:([a-z0-9\-/]+)", raw)))[:25])

if refs:
    print("\n=== daftar blok rujukan (reusable) ===")
    for rid in sorted(set(refs)):
        d = rest(f"/wp-json/wp/v2/blocks/{rid}?context=edit&_fields=id,title,content")
        if isinstance(d, dict) and d.get("id"):
            isi = d["content"]["raw"]
            print(f"   #{rid} {json.dumps(d.get('title'))[:50]:<52} panjang {len(isi):>6} | heading: "
                  f"{len(re.findall('<h[1-6]', isi, re.I))}")
        else:
            print(f"   #{rid} tidak bisa dibaca")
