#!/usr/bin/env python3
"""Set URL artikel yang SUDAH PERNAH dipakai per akun Threads.

Gabungan dari: SEMUA jadwal Repliz (semua status, deskripsi+title) + log_threads_harian.json.
Dipakai untuk anti-redundant sebelum menulis caption Threads harian (schedule_all_threads.py).

Output: /tmp/threads_used_all.json  (dict: akun -> sorted list URL)

Pakai:
    python3 scan_threads_used_links.py
    python3 -c "import json;u=json.load(open('/tmp/threads_used_all.json'));
print(len(u['das']))"
"""
import sys, json, re

WS = "/home/mantapman/.openclaw/workspace-atun"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC

LOG = f"{WS}/log_threads_harian.json"
OUT = "/tmp/threads_used_all.json"

ACC_MAP = {
    "studiosoft": ACC.STUDIOSOFT_THREADS,
    "uky": ACC.UKY_THREADS,
    "tslaw": ACC.TSLAW_THREADS,
    "tsc": ACC.TSC_THREADS,
    "das": ACC.DAS_THREADS,
}


def normalize(u):
    return u.rstrip("/").lower()


def main():
    c = get_client()
    docs = []
    for p in range(1, 150):
        r = c.get_schedules(page=p, limit=100)
        b = r.get("docs", [])
        if not b:
            break
        docs += b
        if len(b) < 100:
            break
    print("total schedules:", len(docs))

    log = json.load(open(LOG))
    out = {}
    for name, aid in ACC_MAP.items():
        used = set()
        for d in docs:
            if d.get("accountId") != aid:
                continue
            blob = " ".join([d.get("description") or "", d.get("title") or ""])
            for u in re.findall(r"https?://[^\s\)\]\"']+", blob):
                used.add(u.rstrip(".,"))
        for _date, accs in (log.get("threads_used_links") or {}).items():
            for it in accs.get(name, []):
                used.add(it["url"])
        out[name] = sorted(used)
        print(f"{name}: {len(used)} URL pernah dipakai")

    json.dump(out, open(OUT, "w"), indent=1, ensure_ascii=False)
    print("disimpan:", OUT)


if __name__ == "__main__":
    main()
