#!/usr/bin/env python3
"""DAS: cari tautan keluar yang mengalirkan pengunjung ke luar (studiosoft.id dll) + status pelacak."""
import base64, json, re, time, urllib.request, importlib.util
from collections import Counter

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_das", f"{WS}/cfg_das.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
CFG = m.CFG
DOM, AUTH = CFG["domain"], base64.b64encode(f'{CFG["user"]}:{CFG["pass"]}'.encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}


def rest(p):
    r = urllib.request.Request(f"https://{DOM}{p}", headers={"Authorization": f"Basic {AUTH}", **UA})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=200) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(5)
    return []


posts, page = [], 1
while True:
    d = rest(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish&context=edit&_fields=id,slug,link,content")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1

domain = Counter()
tempat = {}
for p in posts:
    raw = p.get("content", {}).get("raw", "") or ""
    for u in re.findall(r'href="(https?://[^"]+)"', raw):
        d = re.sub(r"^https?://(www\.)?", "", u).split("/")[0].lower()
        if "dasindonesia.com" in d or "wa.me" in d or "whatsapp" in d:
            continue
        domain[d] += 1
        tempat.setdefault(d, []).append((p["id"], p["slug"]))

print("=== tautan keluar non-WhatsApp di isi artikel ===")
for d, n in domain.most_common(20):
    contoh = tempat[d][:2]
    print(f"   {n:>3}x  {d:<34} contoh: {[f'#{i} /{s[:30]}' for i, s in contoh]}")

print("\n=== khusus tautan yang mencurigakan (situs klien lain / non-rujukan) ===")
SUSPEK = ("studiosoft", "tslaw", "theskincode", "klinikmetamorf", "yasmanatura", "dmark", "everyby",
          "abimata", "rsia", "surabaya-skincentre", "linktr.ee")
for d, n in domain.most_common():
    if any(s in d for s in SUSPEK):
        print(f"   {n}x {d}")
        for i, s in tempat[d][:5]:
            print(f"        #{i} /{s}")

print("\n=== status pelacak klik di isi artikel ===")
pelacak = sum(1 for p in posts if "klik_wa" in (p.get("content", {}).get("raw", "") or ""))
print(f"   artikel berpelacak onclick: {pelacak}/{len(posts)}")
print(f"   (catatan: event kustom ini terbukti TIDAK sampai ke GA4; yang tercatat adalah event bawaan 'click')")
