Contexto
Los scripts CLI que solo hacen print() son dificiles de leer cuando procesan muchos items. "Procesando frame 1... Procesando frame 2..." se vuelve ruido. Necesitas algo visual sin agregar una dependencia pesada como curses.
Lo que aprendi
rich convierte tu terminal en algo presentable con una linea:
from rich.console import Console
from rich.table import Table
from rich.progress import track
console = Console()
# Tabla con resultados
table = Table(title="Analisis de Frames")
table.add_column("Frame", style="cyan")
table.add_column("Timestamp", style="green")
table.add_column("Descripcion")
for frame in results:
table.add_row(frame.name, frame.timestamp, frame.description[:60])
console.print(table)
# Progress bar con ETA
for frame in track(frames, description="Analizando..."):
await analyze_frame(frame)
Output:
Analisis de Frames
+----------+-----------+---------------------------+
| Frame | Timestamp | Descripcion |
+----------+-----------+---------------------------+
| frame_01 | 0:05 | Player enters the arena |
| frame_02 | 0:32 | First tower attack |
| frame_03 | 1:15 | Mid-game clash |
+----------+-----------+---------------------------+
Analizando... ━━━━━━━━━━━━━━━━━━━━ 100% 0:00:12
Panels para status
from rich.panel import Panel
console.print(Panel.fit(
f"[bold]Video:[/] {video_name}\n"
f"[bold]Frames:[/] {count}\n"
f"[bold]Costo:[/] ~${cost:.4f}",
title="Resumen",
))
Por que importa
pip install rich y tu script CLI pasa de "hecho por un junior" a "herramienta profesional". No cambia la funcionalidad pero cambia la percepcion. Y las progress bars con ETA te ahorran el "se habra trabado?" mental.