#!/usr/bin/env python3
"""Tentukan spam judi secara pasti: sebaran tanggal + pemeriksaan isi artikel + link keluar."""
import base64, html, json, re, time, urllib.request, urllib.error
from collections import Counter

SITE = "https://klinikmetamorf.com"
UA = {"User-Agent": "Mozilla/5.0"}
AUTH = base64.b64encode(b"bambangbot:whWA hVlW omQk 9FSL 8rkz VMHy").decode()


def wp(path):
    r = urllib.request.Request(SITE + path, headers={"Authorization": f"Basic {AUTH}", **UA})
    for _ in range(4):
        try:
            with urllib.request.urlopen(r, timeout=150) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            return {"__err": e.code}
        except Exception:
            time.sleep(3)
    return {"__err": "gagal"}


posts, page = [], 1
while True:
    d = wp(f"/wp-json/wp/v2/posts?per_page=100&page={page}&context=edit"
           f"&_fields=id,title,date,slug,author,content,categories")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1
print(f"total post: {len(posts)}")

print("\n=== sebaran tanggal seluruh post ===")
for tgl, n in sorted(Counter(p["date"][:10] for p in posts).items()):
    print(f"  {tgl}: {n}")

print("\n=== contoh judul per bulan (untuk lihat mana konten klinik) ===")
per_bulan = {}
for p in sorted(posts, key=lambda x: x["date"]):
    per_bulan.setdefault(p["date"][:7], []).append(html.unescape(p["title"]["rendered"]))
for bulan, judul in sorted(per_bulan.items()):
    print(f"\n  {bulan} ({len(judul)} post):")
    for j in judul[:6]:
        print(f"     - {j[:66]}")

# tanda judi di ISI artikel (bukan cuma judul)
TANDA = re.compile(r"kasyn|kasino|casino|slot|spin|bonus|jackpot|betting|1win|1xbet|22bet|book of ra|"
                   r"pragmatic|depozyt|miză|казино|автомат|hazard|zakład|gry|gra\b|gambling", re.I)
rows = []
for p in posts:
    raw = p["content"]["raw"] if isinstance(p["content"], dict) else ""
    teks = html.unescape(re.sub(r"<[^>]+>", " ", raw))
    n = len(TANDA.findall(teks))
    luar = re.findall(r'href="https?://(?!klinikmetamorf\.com)([^/"]+)', raw)
    rows.append({"id": p["id"], "tgl": p["date"][:10], "judul": html.unescape(p["title"]["rendered"]),
                 "tanda": n, "domain_luar": sorted(set(luar))[:4], "panjang": len(teks)})

json.dump(rows, open("metamorf_semua_post.json", "w"), indent=1, ensure_ascii=False)
kandidat = [r for r in rows if r["tanda"] >= 3 or r["domain_luar"]]
print(f"\npost dengan tanda judi di ISI atau link keluar: {len(kandidat)} dari {len(rows)}")
print("\ncontoh yang tanda-nya tinggi:")
for r in sorted(rows, key=lambda x: -x["tanda"])[:12]:
    print(f"  tanda {r['tanda']:>3} | {r['tgl']} | #{r['id']} | {r['judul'][:52]} | {r['domain_luar']}")
