forked from genewildish/Mainline
feat(examples): Add default visualization script
Add script that renders the standard Mainline visualization using the graph-based DSL. This demonstrates the default behavior with: - Headlines source data - Scroll camera mode - Terminal display - Classic effects: noise, fade, glitch, firehose Files added: - examples/default_visualization.py - Main script - examples/default_visualization.toml - TOML configuration - examples/README.md - Documentation for all examples Usage: python examples/default_visualization.py
This commit is contained in:
86
examples/default_visualization.py
Normal file
86
examples/default_visualization.py
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Default Mainline Visualization
|
||||
|
||||
Renders the standard Mainline visualization using the graph-based DSL.
|
||||
This demonstrates the default behavior: headlines source, scroll camera,
|
||||
terminal display, with classic effects (noise, fade, glitch, firehose).
|
||||
|
||||
Usage:
|
||||
python examples/default_visualization.py
|
||||
|
||||
The visualization will be rendered once and printed to stdout.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add the project root to Python path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
from engine.effects.plugins import discover_plugins
|
||||
from engine.pipeline.graph_toml import load_pipeline_from_toml
|
||||
from engine.pipeline.params import PipelineParams
|
||||
|
||||
|
||||
def main():
|
||||
"""Render the default Mainline visualization."""
|
||||
print("Loading default Mainline visualization...")
|
||||
print("=" * 70)
|
||||
|
||||
# Discover effect plugins
|
||||
discover_plugins()
|
||||
|
||||
# Path to the TOML configuration
|
||||
toml_path = Path(__file__).parent / "default_visualization.toml"
|
||||
|
||||
if not toml_path.exists():
|
||||
print(f"Error: Configuration file not found: {toml_path}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Load pipeline from TOML configuration
|
||||
try:
|
||||
pipeline = load_pipeline_from_toml(
|
||||
toml_path, viewport_width=80, viewport_height=24
|
||||
)
|
||||
print(f"✓ Pipeline loaded from {toml_path.name}")
|
||||
print(f" Stages: {list(pipeline._stages.keys())}")
|
||||
except Exception as e:
|
||||
print(f"Error loading pipeline: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Initialize the pipeline
|
||||
if not pipeline.initialize():
|
||||
print("Error: Failed to initialize pipeline", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print("✓ Pipeline initialized")
|
||||
|
||||
# Set up execution context
|
||||
ctx = pipeline.context
|
||||
ctx.terminal_width = 80
|
||||
ctx.terminal_height = 24
|
||||
|
||||
# Create params for the execution
|
||||
params = PipelineParams(viewport_width=80, viewport_height=24)
|
||||
ctx.params = params
|
||||
|
||||
# Execute the pipeline (empty items list - source will provide content)
|
||||
print("Executing pipeline...")
|
||||
result = pipeline.execute([])
|
||||
|
||||
# Render output
|
||||
if result.success:
|
||||
print("=" * 70)
|
||||
print("Visualization Output:")
|
||||
print("=" * 70)
|
||||
for i, line in enumerate(result.data):
|
||||
print(line)
|
||||
print("=" * 70)
|
||||
print(f"✓ Successfully rendered {len(result.data)} lines")
|
||||
else:
|
||||
print(f"Error: Pipeline execution failed: {result.error}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user