A powerful tool for recording and replaying user interactions
Project description
InteractFlow
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.
Features
- 🎥 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
Quick Start
Installation
pip install interactflow
Alternative: Install from Source
- 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 .
Basic Usage
Recording User Actions
Start recording your actions:
interactflow record
Press Ctrl+C to stop recording. The recording will be automatically saved in the ~/.interactflow/recordings directory.
Playing Back Recordings
Play a recorded session:
interactflow play ~/.interactflow/recordings/your_recording.json
Adjust playback speed:
interactflow play ~/.interactflow/recordings/your_recording.json --speed 2.0 # Play at 2x speed
Listing Available Recordings
View all recordings:
interactflow list
Advanced Usage
Recording Module
from 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')
Playback Module
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
Technical Details
Dependencies
- Python 3.6+
- pynput >= 1.7.6
- python-xlib >= 0.33
Project Structure
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
Recording Format
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
]
}
Platform Support
- Linux (Full support)
- Windows (Full support)
- macOS (Basic support)
Contributing
We welcome contributions! Please see our Contributing Guidelines for details on how to:
- Report bugs
- Suggest enhancements
- Submit pull requests
- Set up development environment
Support
For support, questions, or feature requests:
- Check the issues page
- Create a new issue if needed
- Join our discussions
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Thanks to the
pynputlibrary for providing robust input device monitoring - Inspired by the need for reliable UI automation tools
Made with ❤️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file interactflow-1.0.3.tar.gz.
File metadata
- Download URL: interactflow-1.0.3.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72e975302a91817cc9b73fb85ee2c65c5ec4ce64ff3089a0bb2f67b6c8e9836b
|
|
| MD5 |
17bec759c2f39af6bc2ce0030c28cf72
|
|
| BLAKE2b-256 |
a9b74e9ce14c524a8578277f5f32a3af1beb7932a503fddb09325c35b9d77f0c
|
File details
Details for the file interactflow-1.0.3-py3-none-any.whl.
File metadata
- Download URL: interactflow-1.0.3-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e224126d214a9ccccabed0606817fbeba09caced58e4e80070c04b9cd940b9a
|
|
| MD5 |
ae200ffd7ac934b93bafe381398c2e6b
|
|
| BLAKE2b-256 |
277d4fce27555d1603b167755197bfedd266bf4b98e4c59e729d96bd0bfb5fd1
|