#!/usr/bin/env python3
"""Verifikasi akhir konsolidasi DAS + daftar URL yang perlu redirect."""
import base64, html, json, os, re, time, urllib.request, urllib.error

SITE = "https://dasindonesia.com"
AUTH = base64.b64encode(b"bambangbot:u3a1 G2pQ 3SWY f0zI OlGP YAjU").decode()
WS = os.path.dirname(os.path.abspath(__file__))


def api(path):
    r = urllib.request.Request(SITE + path, headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    return json.loads(urllib.request.urlopen(r, timeout=240).read())


def semua(status):
    out, page = [], 1
    while True:
        d = api(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status={status}&_fields=id,slug,title,link")
        out += d
        if len(d) < 100:
            break
        page += 1
    return out


pub = semua("publish")
dra = semua("draft")
print(f"PUBLISH: {len(pub)} | DRAFT: {len(dra)}")

# sumber yang dipensiunkan (dari laporan gelombang 1 + daftar gelombang 2)
lap = json.load(open(os.path.join(WS, "das_konsolidasi_laporan.json")))
sumber = {x["src"]: x for x in lap}
GEL2 = {6571: 6722, 6726: 6722, 6931: 6722, 7626: 7777, 6730: 6661, 8298: 6479, 6411: None, 6916: None, 5449: None, 6867: None}
for k, v in GEL2.items():
    sumber[k] = {"src": k, "dst": v}
idmap = {p["id"]: p for p in dra}
baris = []
for pid, info in sorted(sumber.items(), key=lambda x: -x[0]):
    p = idmap.get(pid)
    if not p:
        continue
    tu = idmap.get(info.get("dst")) or {}
    baris.append((p["link"], p["title"]["rendered"][:58], tu.get("link", "—")))
print(f"\nURL yang dipensiunkan: {len(baris)}")

# render live halaman utama hasil gabung
print("\n=== cek render halaman utama ===")
for u in ["/bengkel-spesialis-alphard-surabaya/", "/bengkel-mobil-alphard-surabaya-terbaik/",
          "/bengkel-spesialis-lexus-di-surabaya/", "/kapan-mobil-perlu-engine-overhaul-tanda-bahaya/"]:
    try:
        r = urllib.request.Request(SITE + u + "?nc=" + str(int(time.time())), headers={"User-Agent": "Mozilla/5.0", "Cache-Control": "no-cache"})
        h = urllib.request.urlopen(r, timeout=90).read().decode("utf-8", "replace")
        kata = len(re.sub(r"<[^>]+>", " ", h).split())
        print(f"  {u[:52]:<54} HTTP 200 | H2: {len(re.findall(r'<h2', h, re.I))} | kata≈{kata}")
    except urllib.error.HTTPError as e:
        print(f"  {u[:52]:<54} HTTP {e.code}")

with open(os.path.join(WS, "das_url_pensiun.txt"), "w") as f:
    for u, j, t in baris:
        f.write(f"{u}\t{j}\t→ {t}\n")
print(f"\ndaftar URL pensiun ditulis: das_url_pensiun.txt")
for u, j, t in baris[:8]:
    print(f"  {u}")
