#!/usr/bin/env python3
import json, re
from datetime import datetime, timezone

RAW="/home/kiro/trend-engine/trends/x/raw/"
d=json.load(open(RAW+"scan_results_2026-11-08_FULL.json"))
p=json.load(open(RAW+"scan_results_2026-11-07_FULL.json"))
raw=d["raw"]; praw=p["raw"]
def pdt(s): return datetime.strptime(s,"%a %b %d %H:%M:%S %z %Y")

print("=== WATCHLIST / HANDLE DIFF (11-07 -> 11-08) ===")
a,b=set(praw),set(raw)
print("handles 11-07:",len(a),"11-08:",len(b))
print("ADDED:",sorted(b-a))
print("REMOVED:",sorted(a-b))
print("11-07 failures:",p.get("failures"))

print("\n=== 24H DELTAS on shared tweet ids (top 20 by likes gained) ===")
prev={}
for h,tw in praw.items():
    for t in tw: prev[t["id"]]=(h,t)
rows=[]
for h,tw in raw.items():
    for t in tw:
        if t["id"] in prev:
            ph,pt=prev[t["id"]]
            rows.append((t["likeCount"]-pt["likeCount"], t["viewCount"]-pt["viewCount"], h, t["id"], pt["likeCount"], t["likeCount"], pt["viewCount"], t["viewCount"], t["text"][:70].replace("\n"," ")))
for r in sorted(rows,key=lambda r:-r[0])[:20]:
    print(f"+{r[0]:6d}L +{r[1]:9d}V @{r[2]} ({r[4]}->{r[5]}L, {r[6]}->{r[7]}V) {r[3]} :: {r[8]}")
print("\n=== NEGATIVE (like decay) ===")
for r in sorted(rows,key=lambda r:r[0])[:6]:
    print(f"{r[0]:7d}L {r[1]:+9d}V @{r[2]} ({r[4]}->{r[5]}L) :: {r[8]}")

print("\n=== NEW TWEET IDS TODAY (top 20 by likes) ===")
cand=[]
for h,tw in raw.items():
    for t in tw:
        if t["id"] not in prev: cand.append((h,t))
for h,t in sorted(cand,key=lambda x:-x[1]["likeCount"])[:20]:
    r=t["likeCount"]/max(t["viewCount"],1)*100
    print(f"@{h} {t['createdAt'][:16]} {t['likeCount']}L/{t['retweetCount']}RT/{t['replyCount']}R/{t['viewCount']}V rate={r:.2f}% :: {t['text'][:130].replace(chr(10),' ')}")

print("\n=== HANDLE CHRONOLOGY: key accounts ===")
for h in ["higgsfield","higgsfield_ai","EHuanglu","dai2noyuyuta","Lab_for_Men","perplexity_ai","Kling_ai","Flovaai","CharaspowerAI","ElsaSofia__AI","AIWarper","azed_ai","c_valenzuelab","runwayml","pika_labs","openart_ai","venturetwins","heyglif","ItsMaryamAi","GoogleAI"]:
    tw=raw.get(h) or []
    if not tw: print(f"\n-- @{h}: NO DATA"); continue
    print(f"\n-- @{h} n={len(tw)}")
    for t in sorted(tw,key=lambda t:-pdt(t["createdAt"]).timestamp())[:22]:
        rt="RT" if t.get("retweeted_tweet") else "  "
        med=t.get("media") or []
        mt=med[0].get("type") if med else "-"
        r=t["likeCount"]/max(t["viewCount"],1)*100
        print(f"  {t['createdAt'][4:16]} {rt} {t['likeCount']:5d}L/{t['viewCount']:8d}V {r:5.2f}% {mt:5s} :: {t['text'][:110].replace(chr(10),' ')}")
