Skip to main content

A powerful tool for recording and replaying user interactions

Project description

InteractFlow

Python Version Version License: MIT PyPI Status Upload Python Package Downloads

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

  1. Clone the repository:
git clone git@github.com:yashChouriya/interactflow.git
cd interactflow
  1. Create and activate a virtual environment:
python -m venv env
source env/bin/activate  # On Windows: .\env\Scripts\activate
  1. 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:

  1. Check the issues page
  2. Create a new issue if needed
  3. Join our discussions

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Thanks to the pynput library for providing robust input device monitoring
  • Inspired by the need for reliable UI automation tools

Made with ❤️

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interactflow-1.0.3.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

interactflow-1.0.3-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

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

Hashes for interactflow-1.0.3.tar.gz
Algorithm Hash digest
SHA256 72e975302a91817cc9b73fb85ee2c65c5ec4ce64ff3089a0bb2f67b6c8e9836b
MD5 17bec759c2f39af6bc2ce0030c28cf72
BLAKE2b-256 a9b74e9ce14c524a8578277f5f32a3af1beb7932a503fddb09325c35b9d77f0c

See more details on using hashes here.

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

Hashes for interactflow-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8e224126d214a9ccccabed0606817fbeba09caced58e4e80070c04b9cd940b9a
MD5 ae200ffd7ac934b93bafe381398c2e6b
BLAKE2b-256 277d4fce27555d1603b167755197bfedd266bf4b98e4c59e729d96bd0bfb5fd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page