BladeSzaSza's picture
added overlay video
36537b9
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
The Laban Movement Analysis project is a Gradio 5 custom component that performs video movement analysis using Laban Movement Analysis (LMA) principles combined with modern pose estimation models. It provides both a web UI and MCP-compatible API for AI agents.
### Core Architecture
- **Backend**: Custom Gradio component in `backend/gradio_labanmovementanalysis/`
- **Frontend**: Svelte components in `frontend/` for the Gradio UI
- **Demo**: Standalone Gradio app in `demo/` for testing and deployment
- **Main Entry**: `app.py` serves as the primary entry point for Hugging Face Spaces
### Key Components
1. **LabanMovementAnalysis**: Main Gradio component (`labanmovementanalysis.py`)
2. **Pose Estimation**: Multi-model support (MediaPipe, MoveNet, YOLO variants)
3. **Notation Engine**: LMA analysis logic (`notation_engine.py`)
4. **Visualizer**: Video annotation and overlay generation (`visualizer.py`)
5. **Agent API**: MCP-compatible interface for AI agents (`agent_api.py`)
6. **Video Processing**: Smart input handling including YouTube/Vimeo downloads (`video_downloader.py`)
## Development Commands
### Running the Application
```bash
# Main application (Hugging Face Spaces compatible)
python app.py
# Demo version
cd demo && python app.py
# Alternative demo with space configuration
python demo/space.py
```
### Package Management
```bash
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .
# Build package
python -m build
# Upload to PyPI
python -m twine upload dist/*
```
### Frontend Development
```bash
cd frontend
npm install
npm run build
```
## Pose Estimation Models
The system supports 15+ pose estimation variants:
- **MediaPipe**: `mediapipe-lite`, `mediapipe-full`, `mediapipe-heavy`
- **MoveNet**: `movenet-lightning`, `movenet-thunder`
- **YOLO v8**: `yolo-v8-n`, `yolo-v8-s`, `yolo-v8-m`, `yolo-v8-l`, `yolo-v8-x`
- **YOLO v11**: `yolo-v11-n`, `yolo-v11-s`, `yolo-v11-m`, `yolo-v11-l`, `yolo-v11-x`
## API Usage Patterns
### Standard Processing
```python
from gradio_labanmovementanalysis import LabanMovementAnalysis
analyzer = LabanMovementAnalysis()
result = analyzer.process(video_path, model="mediapipe-full")
```
### Agent API (MCP Compatible)
```python
from gradio_labanmovementanalysis.agent_api import LabanAgentAPI
api = LabanAgentAPI()
result = await api.analyze_video(video_path, model="mediapipe-full")
```
### Enhanced Processing with Visualization
```python
json_result, viz_video = analyzer.process_video(
video_path,
model="mediapipe-full",
enable_visualization=True,
include_keypoints=True
)
```
## File Organization
- **Examples**: JSON output samples in `examples/` (mediapipe.json, yolo*.json, etc.)
- **Version Info**: `version.py` contains package metadata
- **Configuration**: `pyproject.toml` for package building and dependencies
- **Deployment**: Both standalone (`app.py`) and demo (`demo/`) configurations
## Important Implementation Notes
- The component inherits from Gradio's base `Component` class
- Video processing supports both file uploads and URL inputs (YouTube, Vimeo, direct URLs)
- MCP server capability is enabled via `mcp_server=True` in launch configurations
- Error handling includes graceful fallbacks when optional features (like Agent API) are unavailable
- The system uses temporary files for video processing and cleanup
- JSON output includes both LMA analysis and optional raw keypoint data
## Development Considerations
- The codebase maintains backward compatibility between demo and main app versions
- Component registration follows Gradio 5 patterns with proper export definitions
- Frontend uses modern Svelte with Gradio's component system
- Dependencies are managed through both requirements.txt and pyproject.toml
- The system is designed for both local development and cloud deployment (HF Spaces)