#!/usr/bin/env python3
"""Uji kunci Semrush dengan format resmi; bandingkan basis data (us vs id) dan cek saldo unit."""
import json, urllib.parse, urllib.request, urllib.error

KUNCI = json.load(open("/home/mantapman/.hermes/profiles/atun/workspace/.semrush_token.json"))["token"]

UJI = [
    ("domain_ranks us", {"type": "domain_ranks", "key": KUNCI, "export_columns": "Dn,Rk,Or,Ot,Oc,Ad,At,Ac",
                         "domain": "studiosoft.id", "database": "us"}),
    ("domain_ranks id", {"type": "domain_ranks", "key": KUNCI, "export_columns": "Dn,Rk,Or,Ot,Oc,Ad,At,Ac",
                         "domain": "studiosoft.id", "database": "id"}),
    ("domain_organic us", {"type": "domain_organic", "key": KUNCI, "display_limit": "5",
                           "export_columns": "Ph,Po,Nq,Cp,Ur", "domain": "studiosoft.id", "database": "us"}),
    ("phrase_this us", {"type": "phrase_this", "key": KUNCI, "export_columns": "Ph,Nq,Cp,Co,Nr",
                        "phrase": "jasa seo surabaya", "database": "us"}),
]
for nama, p in UJI:
    u = "https://api.semrush.com/?" + urllib.parse.urlencode(p)
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers={"User-Agent": "Mozilla/5.0"}), timeout=90)
        isi = r.read().decode("utf-8", "replace")
        print(f"\n   ✅ {nama} | status {r.status} | {len(isi)} byte")
        for baris in isi.strip().split("\n")[:5]:
            print("      " + baris[:160])
    except urllib.error.HTTPError as e:
        print(f"\n   ❌ {nama} | HTTP {e.code} | {e.read().decode('utf-8','replace').strip()[:160]}")

print("\n=== saldo unit API (pola resmi: /?type=api_units_balance atau management) ===")
for jalur in ("https://api.semrush.com/?type=api_units_balance&key=" + KUNCI,
              "https://api.semrush.com/management/v1/units?key=" + KUNCI,
              "https://api.semrush.com/v3/units?key=" + KUNCI):
    try:
        r = urllib.request.urlopen(urllib.request.Request(jalur, headers={"User-Agent": "Mozilla/5.0"}), timeout=60)
        print(f"   ✅ {jalur[-52:]} → {r.read().decode()[:200]}")
    except urllib.error.HTTPError as e:
        print(f"   ❌ {jalur[-52:]} → HTTP {e.code} | {e.read().decode('utf-8','replace').strip()[:120]}")
