#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Cek URL media jadwal PENDING TS Law (semua akun) — curl paralel.

Pakai: python3 cek_media_pending_tslaw.py
"""
import sys, subprocess, concurrent.futures as cf
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client

AKUN = {
    "6a35f8b7c5ff4ce3a322b2ed": "Threads",
    "6a76a54d62caae1e04f30968": "IG",
    "6a3b41d1c5ff4ce3a32753e8": "FB",
}

c = get_client()
docs, page = [], 1
while True:
    r = c.get(f"/public/schedule?page={page}&limit=100")
    d = r.get("docs") or []
    docs.extend(d)
    if not d or page * 100 >= (r.get("totalDocs") or 0):
        break
    page += 1

urls = {}
for x in docs:
    aid = (x.get("account") or {}).get("_id")
    if aid not in AKUN or x.get("status") != "pending":
        continue
    for m in (x.get("medias") or []):
        u = m.get("url") or ""
        if u.startswith("http"):
            urls.setdefault(u, []).append((AKUN[aid], x.get("title") or ""))
print("URL unik pending TS Law:", len(urls))


def cek(u):
    p = subprocess.run(["curl", "-4", "-s", "-o", "/dev/null", "-w", "%{http_code}",
                        "--max-time", "25", "-L", u], capture_output=True, text=True)
    return u, (p.stdout or "000").strip()


bad = 0
with cf.ThreadPoolExecutor(max_workers=8) as ex:
    for u, code in ex.map(cek, list(urls)):
        if code != "200":
            bad += 1
            pakai = urls[u][:2]
            print(f"  ❌ {code} {u}")
            for a, t in pakai:
                print(f"       dipakai: {a} | {t[:45]}")
print(f"selesai — URL bermasalah: {bad} dari {len(urls)}")
