#!/usr/bin/env python3
"""Verifikasi artikel TSC #10250 (kulit sensitif) setelah dijadwalkan."""
import base64, importlib.util, json, re, html, subprocess, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg", f"{WS}/cfg_tsc.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
CFG = m.CFG
DOM = CFG["domain"]
AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
PID = 10250
TOMBOL_EXPECT = ('<p style="text-align:center;margin:32px 0 8px"><a class="wp-block-button__link wp-element-button" '
                 'href="https://wa.me/6285117444417?text=Saya%20ingin%20konsultasi%20masalah%20kulit%20di%20The%20Skin%20Code%20Clinic" '
                 'target="_blank" rel="noopener" style="display:inline-block;background-color:#0f2557;color:#ffffff;'
                 'padding:15px 34px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:6px;">'
                 'KONSULTASI GRATIS</a></p>')


def get(p):
    r = urllib.request.Request(f"https://{DOM}{p}", headers={"Authorization": f"Basic {AUTH}",
                                                             "User-Agent": "Mozilla/5.0"})
    with urllib.request.urlopen(r, timeout=120) as x:
        return json.loads(x.read())


d = get(f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=id,status,date,date_gmt,slug,link,title,content,"
        f"featured_media,meta,categories,tags")
html_isi = d["content"]["raw"]
teks = re.sub(r"<[^>]+>", " ", html_isi)
print(f"id         : {d['id']}")
print(f"status     : {d['status']}")
print(f"date       : {d['date']}  (date_gmt {d['date_gmt']})")
print(f"slug       : {d['slug']}")
print(f"judul      : {html.unescape(re.sub('<[^>]+>', '', d['title']['raw']))}")
print(f"kata       : {len(teks.split())}")
print(f"h2/h3      : {html_isi.count('<h2')}/{html_isi.count('<h3')}")
print(f"featured   : {d['featured_media']}")
meta = d.get("meta") or {}
print(f"yoast title: {meta.get('_yoast_wpseo_title')!r}")
print(f"yoast desc : {meta.get('_yoast_wpseo_metadesc')!r}")
print(f"yoast focus: {meta.get('_yoast_wpseo_focuskw')!r}")
print(f"tombol WA  : {'PERSIS' if TOMBOL_EXPECT in html_isi else 'TIDAK PERSIS'}")
CJK = re.findall("[\u3000-\u9fff\uac00-\ud7af]", teks)
print(f"em dash    : {len(re.findall('—', teks))} · kutip melengkung: {len(re.findall('[“”‘’]', teks))} "
      f"· CJK: {len(CJK)} · tanda seru: {teks.count('!')}")
tautan = sorted(set(re.findall(r'href="(https://www\.theskincodeclinic\.com/[^"]+)"', html_isi)))
print(f"tautan internal ({len(tautan)}):")
for u in tautan:
    out = subprocess.run(["curl", "-4", "-s", "-o", "/dev/null", "-w", "%{http_code}",
                          "-A", "Mozilla/5.0", u], capture_output=True, text=True)
    print(f"   {out.stdout}  {u}")

med = get(f"/wp-json/wp/v2/media/{d['featured_media']}?context=edit&_fields=id,source_url,alt_text,mime_type,"
          f"media_details")
print(f"gambar     : {med['source_url']} ({med['mime_type']}, {med['media_details']['width']}x"
      f"{med['media_details']['height']}) alt={med['alt_text']!r}")
out = subprocess.run(["curl", "-4", "-s", "-o", "/dev/null", "-w", "%{http_code}", "-A", "Mozilla/5.0",
                      med["source_url"]], capture_output=True, text=True)
print(f"gambar HTTP: {out.stdout}")

fut = get("/wp-json/wp/v2/posts?per_page=100&status=future&orderby=date&order=asc&_fields=id,slug,date")
print(f"\njadwal future ({len(fut)}):")
per_hari = {}
for x in fut:
    per_hari.setdefault(x["date"][:10], []).append(x["slug"])
    print(f"   {x['date'][:16]}  #{x['id']}  /{x['slug']}")
ganda = {t: v for t, v in per_hari.items() if len(v) > 1}
print(f"hari dengan >1 artikel: {ganda if ganda else 'tidak ada'}")
