#!/usr/bin/env python3
"""Otterly: tarik statistik visibilitas AI untuk laporan merek yang sudah ada (StudioSoft)."""
import json, urllib.error, urllib.parse, urllib.request
from datetime import date, timedelta

KUNCI = json.load(open("/home/mantapman/.hermes/profiles/atun/workspace/.otterly_token.json"))["key"]
BASE = "https://data.otterly.ai"
RID = "01M4797HPCBKXWRDM4X5K826C1"
H = {"Authorization": f"Bearer {KUNCI}", "Accept": "application/json", "User-Agent": "Mozilla/5.0"}

akhir = date.today()
awal = akhir - timedelta(days=30)
RENTANG = {"startDate": awal.isoformat(), "endDate": akhir.isoformat(), "country": "id"}


def panggil(jalur, params=None, timeout=120):
    u = BASE + jalur + ("?" + urllib.parse.urlencode(params or RENTANG) if params is not False else "")
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers=H), timeout=timeout)
        return r.status, r.read().decode("utf-8", "replace")
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode("utf-8", "replace")[:250]
    except Exception as e:
        return 0, str(e)[:90]


print(f"=== rentang: {RENTANG['startDate']} → {RENTANG['endDate']} ===")

print("\n=== statistik visibilitas ===")
st, isi = panggil(f"/v1/reports/brand/{RID}/stats")
print(f"   status {st}")
if st == 200:
    d = json.loads(isi)
    print("   " + json.dumps(d, indent=1, ensure_ascii=False)[:1200])

print("\n=== prompt yang dipantau ===")
st2, isi2 = panggil(f"/v1/reports/brand/{RID}/prompts")
print(f"   status {st2}")
if st2 == 200:
    d2 = json.loads(isi2)
    items = d2.get("items") or d2.get("data") or []
    print(f"   jumlah prompt: {len(items)}")
    for it in items[:12]:
        t = it.get("prompt") or it.get("text") or json.dumps(it)[:80]
        print(f"      • {str(t)[:110]}")

print("\n=== sumber yang dikutip AI (citations) ===")
st3, isi3 = panggil(f"/v1/reports/brand/{RID}/citations")
print(f"   status {st3} | {isi3[:400]}")

print("\n=== rekomendasi ===")
st4, isi4 = panggil(f"/v1/reports/brand/{RID}/recommendations")
print(f"   status {st4} | {isi4[:400]}")
