#!/usr/bin/env python3
"""Fresh tslaw (normalisasi .htm) + status jadwal tslaw 10-11 Okt + verifikasi HTTP link kandidat."""
import json, re, subprocess
from datetime import datetime, timedelta, timezone

WIB = timezone(timedelta(hours=7))
docs = json.load(open("/tmp/scheds_1011.json"))
URL_RE = re.compile(r"https?://[^\s\)\]\"]+")


def norm(u):
    u = u.rstrip("/.,").lower()
    if u.endswith(".htm"):
        u = u[:-4]
    return u


seen = set()
for d in docs:
    txt = " ".join(str(d.get(k) or "") for k in ("description", "title", "topic", "medias"))
    for u in URL_RE.findall(txt):
        seen.add(norm(u))

log = json.load(open("/home/mantapman/.hermes/profiles/atun/workspace/log_threads_harian.json"))
for d, per_acc in (log.get("threads_used_links") or {}).items():
    for a, items in per_acc.items():
        for it in items:
            if it.get("url"):
                seen.add(norm(it["url"]))

print("== jadwal tslaw 8-12 Okt ==")
for d in docs:
    if d.get("accountId") != "6a35f8b7c5ff4ce3a322b2ed":
        continue
    sa = d.get("scheduleAt")
    try:
        dt = datetime.fromisoformat(str(sa).replace("Z", "+00:00")).astimezone(WIB)
    except Exception:
        continue
    if dt.strftime("%Y-%m-%d") in ("2026-10-08", "2026-10-09", "2026-10-10", "2026-10-11", "2026-10-12"):
        print(f"  {dt:%Y-%m-%d %H:%M} {d.get('type'):6} {d.get('status'):8} {d.get('_id')} :: {(d.get('description') or '')[:80]!r}")

print("\n== log posts 8-10 Okt ==")
for p in log["posts"]:
    if p.get("date") in ("2026-10-08", "2026-10-09", "2026-10-10"):
        print(" ", p["date"], json.dumps(p.get("threads_standalone"), ensure_ascii=False)[:600])

print("\n== tslaw FRESH (belum pernah dipakai) ==")
posts = subprocess.run(["curl", "-4", "-s", "-m", "30", "-A", "Mozilla/5.0",
                        "https://www.tslaw.id/wp-json/wp/v2/posts?per_page=100&_fields=link,title,date&orderby=date&order=desc"],
                       capture_output=True, text=True)
data = json.loads(posts.stdout)
fresh = []
for p in data:
    if norm(p["link"]) not in seen:
        t = re.sub(r"<[^>]+>", "", p["title"]["rendered"])
        fresh.append((p["date"][:10], p["link"], t))
print(f"  {len(fresh)} fresh dari {len(data)}")
for dt, link, t in fresh:
    print(f"   {dt} {link}\n       {t}")

print("\n== verifikasi HTTP kandidat ==")
kand = [
    "https://www.tslaw.id/8-langkah-legalitas-perusahaan-surabaya.htm",
    "https://www.tslaw.id/panduan-pendirian-pt-untuk-pelaku-usaha.htm",
    "https://www.tslaw.id/cara-daftar-cv-pt-online.htm",
    "https://www.tslaw.id/cara-daftar-merek-dagang.htm",
    "https://www.tslaw.id/cara-daftar-hak-cipta.htm",
    "https://www.tslaw.id/6-jenis-surat-kuasa-hukum-dan-fungsinya-yang-wajib-anda-pahami.htm",
    "https://www.tslaw.id/pengacara-gugat-cerai-surabaya",
    "https://studiosoft.id/strategi-guerilla-marketing-umkm/",
    "https://studiosoft.id/ai-untuk-konten-marketing-menulis-artikel-seo-yang-disukai-google/",
    "https://studiosoft.id/7-langkah-optimasi-konten-masuk-ai-overview-google-surabaya/",
    "https://studiosoft.id/8-alasan-jasa-seo-surabaya-lebih-efektif-dibanding-iklan-berbayar/",
    "https://www.theskincodeclinic.com/facial-sidoarjo-jenis-manfaat-cara-memilih/",
    "https://www.theskincodeclinic.com/faq-dokter-kulit-krian/",
    "https://www.theskincodeclinic.com/menjaga-skin-barrier-kulit-sehat/",
    "https://dasindonesia.com/bengkel-mobil-mewah-di-surabaya-panduan-merawat-alphard-land-cruiser-dan-sedan-premium/",
    "https://dasindonesia.com/biaya-servis-bmw-series-3-2/",
]
for u in kand:
    r = subprocess.run(["curl", "-4", "-s", "-o", "/dev/null", "-w", "%{http_code} %{url_effective}",
                        "-L", "-m", "25", "-A", "Mozilla/5.0", u], capture_output=True, text=True)
    print(f"   {r.stdout.strip()}  <= {u}")
