#!/usr/bin/env python3
import json, os, time
import requests

key = None
for line in open(os.path.expanduser("~/.hermes/.env")):
    if line.startswith("GETXAPI_KEY="):
        key = line.split("=", 1)[1].strip()
        break
H = {"Authorization": f"Bearer {key}"}
D = "https://api.getxapi.com/twitter/tweet/detail"
TID = "2111830094171828402"

for attempt in range(6):
    r = requests.get(D, params={"id": TID}, headers=H, timeout=40)
    if r.status_code == 200:
        d = r.json().get("data") or {}
        au = d.get("author") or {}
        print("AUTHOR:", au.get("userName"), "|", au.get("name"), "| followers:", au.get("followers"))
        print("BIO:", (au.get("description") or "").replace("\n", " ")[:200])
        print("CREATED:", d.get("createdAt"))
        print("LIKES:", d.get("likeCount"), "RT:", d.get("retweetCount"), "VIEWS:", d.get("viewCount"),
              "REPLIES:", d.get("replyCount"), "BOOKMARKS:", d.get("bookmarkCount"))
        print("\n=== TEXT ===")
        print(d.get("text"))
        qt = d.get("quoted_tweet")
        if qt:
            print("\n=== QUOTED ===")
            print(qt.get("text"))
        med = d.get("media") or []
        if med:
            print("\nMEDIA:", len(med))
            for m in med[:6]:
                print("  ", m.get("type"), (m.get("url") or m.get("preview_image_url") or "")[:120])
        json.dump(d, open(f"/home/kiro/trend-engine/trends/x/banger-x-results/2026-11-05_tweet_{TID}.json", "w"), indent=1)
        break
    print("retry", r.status_code); time.sleep(3)

# replies
time.sleep(1)
q = f"conversation_id:{TID}"
r = requests.get("https://api.getxapi.com/twitter/tweet/advanced_search",
                 params={"q": q, "product": "Latest"}, headers=H, timeout=45)
print("\n=== REPLIES:", r.status_code)
if r.status_code == 200:
    tw = r.json().get("tweets", [])
    for t in sorted(tw, key=lambda x: x.get("likeCount", 0) or 0, reverse=True)[:12]:
        if t.get("id") == TID:
            continue
        a = (t.get("author") or {}).get("userName")
        print(f"\n@{a} [{t.get('likeCount')}] " + " ".join((t.get("text") or "").split())[:350])
