InteractFlow is a powerful Python tool designed to record and replay user interactions with high precision. Perfect for creating automated workflows, testing scenarios, or demonstrating user interfaces, it captures every detail of user interaction including mouse movements, clicks, keyboard inputs, and scroll actions.
- ๐ฅ High-Precision Recording: Captures mouse movements, clicks, keyboard inputs, and scroll actions
- โฏ๏ธ Flexible Playback: Replay recorded actions with adjustable speed
- ๐ฎ Multiple Recording Management: Save and organize multiple recordings
- โก Performance Optimized: Smart filtering of redundant mouse movements
- ๐ก๏ธ Graceful Handling: Clean shutdown and save functionality
pip install interactflow- Clone the repository:
git clone git@github.com:yashChouriya/interactflow.git
cd interactflow- Create and activate a virtual environment:
python -m venv env
source env/bin/activate # On Windows: .\env\Scripts\activate- Install in development mode:
pip install -e .Start recording your actions:
interactflow recordPress Ctrl+C to stop recording. The recording will be automatically saved in the ~/.interactflow/recordings directory.
Play a recorded session:
interactflow play ~/.interactflow/recordings/your_recording.jsonAdjust playback speed:
interactflow play ~/.interactflow/recordings/your_recording.json --speed 2.0 # Play at 2x speedView all recordings:
interactflow listfrom interactflow.recorder import ActivityRecorder
# Initialize recorder
recorder = ActivityRecorder()
# Start recording
recorder.start_recording()
# Stop recording
recorder.stop_recording()
# Save recording
recorder.save_recording('my_recording.json')from interactflow.player import ActivityPlayer
# Initialize player
player = ActivityPlayer()
# Load and play recording
player.load_recording('my_recording.json')
player.play(speed_multiplier=1.5) # Play at 1.5x speed- Python 3.6+
- pynput >= 1.7.6
- python-xlib >= 0.33
interactflow/
โโโ src/
โ โโโ __init__.py
โ โโโ main.py # CLI interface
โ โโโ recorder.py # Recording functionality
โ โโโ player.py # Playback functionality
โโโ recordings/ # Stored recordings directory
โโโ .github/ # GitHub configuration
โ โโโ workflows/ # GitHub Actions
โโโ requirements.txt # Project dependencies
โโโ setup.py # Package configuration
โโโ LICENSE # MIT License
โโโ CONTRIBUTING.md # Contribution guidelines
โโโ README.md # This file
Recordings are stored in JSON format with the following structure:
{
"version": "1.0",
"timestamp": "2024-10-31T12:00:00",
"events": [
{
"type": "mouse_move",
"timestamp": 1.234,
"x": 100,
"y": 200
}
// ... more events
]
}- Linux (Full support)
- Windows (Full support)
- macOS (Basic support)
We welcome contributions! Please see our Contributing Guidelines for details on how to:
- Report bugs
- Suggest enhancements
- Submit pull requests
- Set up development environment
For support, questions, or feature requests:
- Check the issues page
- Create a new issue if needed
- Join our discussions
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to the
pynputlibrary for providing robust input device monitoring - Inspired by the need for reliable UI automation tools
Made with โค๏ธ