#!/usr/bin/env python3
"""Board-wide keyword sweeps + trend + key full texts for 2026-11-06."""
import json, os, re, glob
from datetime import datetime, timedelta, timezone

RAW = "/home/kiro/trend-engine/trends/x/raw"
cur = json.load(open(os.path.join(RAW, "scan_results_2026-11-06_FULL.json")))
now = datetime.now(timezone.utc)
cutoff = now.replace(hour=0,minute=0,second=0,microsecond=0) - timedelta(days=3)

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

rawd = {}
for h, tw in cur["raw"].items():
    for t in tw:
        rawd[t.get("id")] = (h, t)

print("=== TREND (last 16 runs) ===")
files = sorted(glob.glob(os.path.join(RAW, "scan_results_*_FULL.json")))[-16:]
for f in files:
    d = json.load(open(f))
    print(f"  {d['date']}: {len(d['qualifying']):4d} qualifying, {len(d['raw'])} fetched, "
          f"{len(d['failures'])} fail")

print("\n=== KEYWORDS (in-window originals, all handles) ===")
KEYS = ["davinci", "resolve", "topaz", "topview", "nebius", "magnific", "genjutsu", "content factory",
        "ads studio", "cashback", "runway unlimited", "pixverse", "chroma", "capcut", "black friday",
        "p-video", "pruna", "viggle", "remake", "glif", "gemini omni", "openart", "seedance", "genesis",
        "h3 flex", "luma", "midjourney", "sora", "veo", "kling 4"]
for k in KEYS:
    hits = []
    for h, tw in cur["raw"].items():
        for t in tw:
            if t.get("retweeted_tweet") or t.get("type") == "retweet": continue
            txt = (t.get("text") or "")
            if txt.startswith("RT @"): continue
            d = pdate(t.get("createdAt", ""))
            if not d or d < cutoff: continue
            blob = txt + " " + ((t.get("quoted_tweet") or {}).get("text") or "") + \
                   " " + ((t.get("retweeted_tweet") or {}).get("text") or "")
            if re.search(re.escape(k), blob, re.I):
                hits.append((h, t, txt))
    print(f"\n  [{k}] {len(hits)} in-window hits")
    for h, t, txt in hits[:6]:
        d = pdate(t.get("createdAt", ""))
        print(f"    @{h:15s} {d.strftime('%m-%d %H:%M')} {t.get('likeCount')}L/{t.get('viewCount')}V: "
              f"{txt[:170].replace(chr(10),' ')}")

print("\n\n=== FULL TEXT: higgsfield_ai dinosaur documentary ===")
for t_id, (h, t) in rawd.items():
    if h == "higgsfield_ai" and re.search(r"dinosaur", (t.get("text") or "") + ((t.get("quoted_tweet") or {}).get("text") or ""), re.I):
        print(f"\n--- @{h} {pdate(t.get('createdAt','')).strftime('%m-%d %H:%M')} "
              f"{t.get('likeCount')}L/{t.get('retweetCount')}RT/{t.get('replyCount')}R/{t.get('viewCount')}V")
        print((t.get("text") or ""))
        q = t.get("quoted_tweet")
        if q:
            print("  QUOTED:", (q.get("text") or "")[:1500])

print("\n\n=== AI WARPER full text in-window ===")
tw = cur["raw"].get("AIWarper") or []
rows = [(pdate(t.get("createdAt","")), t) for t in tw]
rows = [r for r in rows if r[0] and r[0] >= cutoff]
rows.sort(key=lambda r: (r[0], r[1].get("id") or ""), reverse=True)
for d, t in rows:
    print(f"  {d.strftime('%m-%d %H:%M')} {t.get('likeCount')}L/{t.get('viewCount')}V: "
          f"{(t.get('text') or '')[:230].replace(chr(10),' ')}")

print("\n\n=== CHARASPOWER full in-window ===")
tw = cur["raw"].get("CharaspowerAI") or []
rows = [(pdate(t.get("createdAt","")), t) for t in tw]
rows = [r for r in rows if r[0] and r[0] >= cutoff]
rows.sort(key=lambda r: (r[0], r[1].get("id") or ""), reverse=True)
for d, t in rows:
    print(f"  {d.strftime('%m-%d %H:%M')} {t.get('likeCount')}L/{t.get('viewCount')}V: "
          f"{(t.get('text') or '')[:200].replace(chr(10),' ')}")
