#!/usr/bin/env python3
"""Verify pass: 24h deltas on key posts, live staleness probe, CharaspowerAI/ElsaSofia in-window."""
import json, re, time
import requests
from datetime import datetime

D = "/home/kiro/trend-engine/trends/x/raw/"
a = json.load(open(D + "scan_results_2026-11-03_FULL.json"))
b = json.load(open(D + "scan_results_2026-11-02_FULL.json"))
cutoff = datetime(2026,10,31,0,0,0)

def pd(s):
    try: return datetime.strptime(s,"%a %b %d %H:%M:%S %z %Y").replace(tzinfo=None)
    except Exception: return None

def idx(doc):
    out = {}
    for h,tw in doc["raw"].items():
        for t in tw:
            out[str(t.get("id"))] = (h, t)
    return out

ia, ib = idx(a), idx(b)
print("="*70)
print("24H DELTAS on tweets present in BOTH snapshots (top by today's likes)")
common = []
for tid,(h,t) in ia.items():
    if tid in ib:
        t0 = ib[tid][1]
        common.append((h, t, t0))
common.sort(key=lambda z: -(z[1].get("likeCount") or 0))
for h,t,t0 in common[:25]:
    l1, l0 = t.get("likeCount") or 0, t0.get("likeCount") or 0
    v1, v0 = t.get("viewCount") or 0, t0.get("viewCount") or 0
    dl = l1 - l0
    pct = (dl/l0*100) if l0 else 0
    print(f"  @{h:15s} {l1:6d}L ({dl:+5d}, {pct:+6.1f}%) | {v1:9d}V ({v1-v0:+9d}) | {(t.get('text') or '')[:70]}")
print(f"\n  total tweets in both: {len(common)}; today-only: {len(set(ia)-set(ib))}; yesterday-only: {len(set(ib)-set(ia))}")

print("\n"+"="*70)
print("CHARASPOWERAI in-window originals")
for h,tw in a["raw"].items():
    if h != "CharaspowerAI": continue
    rows = [(pd(t.get("createdAt","")), t) for t in tw if not t.get("retweeted_tweet")]
    rows = [(dt,t) for dt,t in rows if dt and dt>=cutoff]
    rows.sort()
    for dt,t in rows:
        print(f"  {dt.strftime('%m-%d %H:%M')} {t.get('likeCount')}L/{t.get('viewCount')}V :: {(t.get('text') or '').replace(chr(10),' ')[:200]}")
        print(f"     https://x.com/CharaspowerAI/status/{t.get('id')}")

print("\n"+"="*70)
print("ELSA SOFIA in-window originals")
for h,tw in a["raw"].items():
    if h != "ElsaSofia__AI": continue
    rows = [(pd(t.get("createdAt","")), t) for t in tw if not t.get("retweeted_tweet")]
    rows = [(dt,t) for dt,t in rows if dt and dt>=cutoff]
    rows.sort()
    for dt,t in rows:
        print(f"  {dt.strftime('%m-%d %H:%M')} {t.get('likeCount')}L/{t.get('viewCount')}V :: {(t.get('text') or '').replace(chr(10),' ')[:160]}")

print("\n"+"="*70)
print("FLOVAAI all fetched")
for h,tw in a["raw"].items():
    if h != "Flovaai": continue
    rows = [(pd(t.get("createdAt","")), t) for t in tw]
    rows = [(dt,t) for dt,t in rows if dt]
    rows.sort()
    for dt,t in rows:
        rt = "RT" if t.get("retweeted_tweet") else "ORIG"
        print(f"  {dt.strftime('%m-%d %H:%M')} {rt} {t.get('likeCount')}L/{t.get('viewCount')}V :: {(t.get('text') or '').replace(chr(10),' ')[:200]}")

print("\n"+"="*70)
print("LIVE STALENESS PROBE (re-query newest createdAt)")
API_KEY=None
for line in open("/home/kiro/.hermes/.env"):
    if line.startswith("GETXAPI_KEY="):
        API_KEY=line.strip().split("=",1)[1]; break
for h in ["higgsfield","higgsfield_ai","Flovaai","openart_ai","CharaspowerAI","NVIDIAAI","EHuanglu"]:
    try:
        r = requests.get("https://api.getxapi.com/twitter/user/tweets",
                         headers={"Authorization": f"Bearer {API_KEY}"},
                         params={"userName": h, "count": 5}, timeout=60)
        tw = r.json().get("tweets", [])
        dts = [pd(t.get("createdAt","")) for t in tw]
        dts = [x for x in dts if x]
        saved = [pd(t.get("createdAt","")) for t in a["raw"].get(h,[])]
        saved = [x for x in saved if x]
        print(f"  @{h:15s} live max={max(dts) if dts else None}  saved max={max(saved) if saved else None}  match={max(dts)==max(saved) if dts and saved else 'n/a'}")
    except Exception as e:
        print(f"  @{h}: ERR {e}")
    time.sleep(0.8)
