"""Prueba EN VIVO del proveedor 'syndication' contra X (usa tu conexión a internet).

Ejecuta:  .venv/bin/python run_real.py

Para cada cuenta activa muestra:
  ✅ frescas (con tweets en la ventana)   🟠 caché viejo de X   ➖ sin novedades   ❌ error
Si ves muchos '❌ rate-limit (429)', espera unos minutos: X limita por IP.
"""

import os
from datetime import datetime, timedelta, timezone

from agent.config import load_config
from agent.providers.syndication import SyndicationProvider, SyndicationError
from agent.store import load_accounts

HERE = os.path.dirname(os.path.abspath(__file__))
cfg = load_config(os.path.join(HERE, "config.yaml"))
accounts_path = cfg["accounts_path"]
if not os.path.isabs(accounts_path):
    accounts_path = os.path.join(HERE, accounts_path)

accounts = [a for a in load_accounts(accounts_path) if a.enabled]
provider = SyndicationProvider(cfg)
window = cfg["window_hours"]
since = datetime.now(timezone.utc) - timedelta(hours=window)

print(f"Probando {len(accounts)} cuentas · ventana {window}h · pausa {provider.delay}s/cuenta")
print(f"cache-bust: {'ON' if provider.cache_bust else 'OFF'} · ~6s por cuenta (≈1 min para 10)\n")

fresh, stale_accounts = 0, []
for a in accounts:
    try:
        tweets = provider.fetch_user_tweets(a.handle, since=since, limit=50)
        meta = provider.last_meta.get(a.handle.lstrip("@"), {})
        newest = meta.get("newest")
        newest_str = newest.astimezone().strftime("%Y-%m-%d %H:%M") if newest else "—"
        if tweets:
            fresh += 1
            print(f"✅ @{a.handle:13} {len(tweets):2} en {window}h | último: {newest_str} | top ❤{tweets[0].likes:,}")
        elif meta.get("stale"):
            stale_accounts.append(a.handle)
            print(f"🟠 @{a.handle:13} CACHÉ VIEJO de X     | último dato: {newest_str}")
        else:
            print(f"➖ @{a.handle:13} sin novedades en {window}h | último: {newest_str}")
    except SyndicationError as e:
        print(f"❌ @{a.handle:13} {e}")

print(f"\nFrescas: {fresh}/{len(accounts)}", end="")
print(f" · caché viejo: {', '.join('@' + h for h in stale_accounts)}" if stale_accounts else "")
if stale_accounts:
    print("Si el cache-bust no las desatasca, hace falta una 2ª fuente para esas cuentas.")
