import json,re
from datetime import datetime,timezone
RAW="/home/kiro/trend-engine/trends/x/raw"
d=json.load(open(f"{RAW}/scan_results_2026-11-13_FULL.json"))
CUT=datetime(2026,11,10,tzinfo=timezone.utc); FMT="%a %b %d %H:%M:%S %z %Y"
orig=[]
for h,t in d['raw'].items():
    for x in t:
        if not x.get('createdAt'): continue
        if x.get('retweeted_tweet'): continue
        if datetime.strptime(x['createdAt'],FMT)<CUT: continue
        orig.append((h,x))
print("in-window originals:",len(orig))

PATTERNS={
 "pct_off":r"\b\d{1,2}% ?(?:off|OFF)",
 "free":r"\b[Ff]ree\b|\bFREE\b",
 "unlimited":r"[Uu]nlimited",
 "sale":r"\bsale\b|\bSALE\b|[Ll]ast chance|Black Friday",
 "trial":r"\btrial\b",
 "discount":r"[Dd]iscount",
 "credits":r"\bcredits?\b",
 "4k":r"\b4K\b|\b4k\b",
 "per_sec":r"per second|/sec|per/sec",
 "deadline":r"[Tt]hrough [A-Z][a-z]+|\buntil\b|ends? |deadline|\bcontest\b",
 "seedream":r"Seedream ?5\.5",
 "seedance_flash":r"Seedance ?2\.5 ?Flash",
}
for name,p in PATTERNS.items():
    hits=[(h,x) for h,x in orig if re.search(p,x.get('text',''))]
    print(f"\n--- {name}: {len(hits)}")
    for h,x in sorted(hits,key=lambda r:-r[1].get('viewCount',0))[:7]:
        print(f"  @{h} {x['createdAt'][:16]} {x.get('likeCount')}L/{x.get('viewCount')}V | {x.get('text','')[:140].replace(chr(10),' ')}")

def dump(handles, pat, label, maxn=8):
    print(f"\n=== {label} ===")
    rx=re.compile(pat,re.I)
    for h in handles:
        for x in d['raw'].get(h,[]):
            if rx.search(x.get('text','')):
                print(f"\n@{h} {x['createdAt']} {x.get('likeCount')}L/{x.get('viewCount')}V")
                print(x.get('text','')[:900])
                print(f"https://x.com/{h}/status/{x.get('id')}")

dump(['higgsfield','higgsfield_ai'], r"contest|\$200,000|\$1,000,000|Talent", "HIGGSFIELD CONTEST")
dump(['higgsfield','higgsfield_ai'], r"Seedance 2\.5 Flash", "SEEDANCE 2.5 FLASH")
dump(['higgsfield','higgsfield_ai'], r"60% OFF|unlimited|MCP|trial", "HIGGSFIELD OFFERS")
dump(['Flovaai'], r"Black Friday|2 year|1 year|40%", "FLOVA BLACK FRIDAY")
dump(['openart_ai'], r"sale|contest|award|Se", "OPENART")
dump(['AIByLeo'], r"CapCut|unlimited", "CAPCUT")
dump(['pika_labs'], r"free|4K|H3", "PIKA")
dump(['runwayml'], r"unlimited|Kling|Seedance|Praxis|4K", "RUNWAY")
dump(['Kling_ai'], r"4\.0|unlimited|Christmas|creator", "KLING")
dump(['CharaspowerAI'], r"Erwin|Seedance|Minimax|Topaz", "CHARAS")
dump(['EHuanglu'], r".", "EHANGLU ALL")
dump(['perplexity_ai'], r".", "PERPLEXITY ALL")
dump(['AIWarper'], r".", "AIWARPER ALL")
