#!/usr/bin/env python3
"""Ambil SEMRUSH_API_KEY dari .env Lek War, simpan salinan aman, lalu uji API-nya."""
import json, os, re, stat, urllib.parse, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
ENV_SUWARNO = "/home/mantapman/.hermes/profiles/suwarno/.env"
SIMPAN = f"{WS}/.semrush_token.json"

print("=== 1. baca kunci dari .env Lek War ===")
kunci = None
for baris in open(ENV_SUWARNO, errors="replace"):
    m = re.match(r"\s*(?:export\s+)?SEMRUSH_API_KEY\s*=\s*(.+)", baris)
    if m:
        kunci = m.group(1).strip().strip('"').strip("'")
        break
if not kunci:
    print("   tidak ditemukan"); raise SystemExit(1)
print(f"   ditemukan: panjang {len(kunci)} karakter | awal {kunci[:4]}… akhir …{kunci[-3:]}")

if not os.path.exists(SIMPAN) or json.load(open(SIMPAN)).get("token") != kunci:
    with open(SIMPAN, "w") as f:
        json.dump({"token": kunci, "disimpan": "2026-10-06", "sumber": ".env profil suwarno (Lek War)"}, f, indent=1)
    os.chmod(SIMPAN, 0o600)
    print(f"   salinan disimpan: {SIMPAN} (izin 600)")
else:
    print("   salinan sudah ada, tidak berubah")

print("\n=== 2. uji API Semrush ===")
UJI = [
    ("domain_ranks", "https://api.semrush.com/?" + urllib.parse.urlencode(
        {"type": "domain_ranks", "key": kunci, "export_columns": "Dn,Rk,Or,Ot,Oc,Ad,At,Ac",
         "domain": "studiosoft.id", "database": "id"})),
    ("domain_organic", "https://api.semrush.com/?" + urllib.parse.urlencode(
        {"type": "domain_organic", "key": kunci, "display_limit": "5",
         "export_columns": "Ph,Po,Nq,Cp,Ur", "domain": "studiosoft.id", "database": "id"})),
    ("url_organic", "https://api.semrush.com/?" + urllib.parse.urlencode(
        {"type": "url_organic", "key": kunci, "display_limit": "5", "export_columns": "Ph,Po,Nq",
         "url": "studiosoft.id/seo-surabaya/", "database": "id"})),
]
for nama, u in UJI:
    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")[:6]:
            print("      " + baris[:150])
    except urllib.error.HTTPError as e:
        print(f"\n   ❌ {nama} | HTTP {e.code} | {e.read().decode('utf-8','replace')[:200]}")
    except Exception as e:
        print(f"\n   ❌ {nama} | {str(e)[:90]}")
