#!/usr/bin/env python3
"""Ekstrak isi post Threads dari HTML share link."""
import json, re, html, sys

p = sys.argv[1] if len(sys.argv) > 1 else "/tmp/threads_ref.html"
h = open(p, encoding="utf-8", errors="ignore").read()

# 1) coba cari blok JSON besar
blok = re.findall(r'<script type="application/json"[^>]*>(.*?)</script>', h, re.S)
print("blok JSON:", len(blok))

teks = []
for b in blok:
    try:
        j = json.loads(html.unescape(b))
    except Exception:
        continue
    def walk(x):
        if isinstance(x, dict):
            for k, v in x.items():
                if k in ("text", "caption", "title") and isinstance(v, str) and len(v) > 2:
                    teks.append((k, v))
                walk(v)
        elif isinstance(x, list):
            for v in x:
                walk(v)
    walk(j)

seen = set()
print("\n=== potongan teks ===")
for k, v in teks:
    if v in seen:
        continue
    seen.add(v)
    print(f"[{k}] {v[:600]}")
    print("-" * 60)

# 2) fallback: og:description / meta
for m in re.findall(r'<meta[^>]+(?:property|name)="(og:description|og:title|description)"[^>]+content="([^"]*)"', h):
    print("META", m[0], ":", html.unescape(m[1])[:500])

print("\n=== username/handle yang muncul ===")
print(sorted({u for u in re.findall(r'"username":"([^"]{2,40})"', h)})[:40])
