Skip to main content

A powerful tool for recording and replaying user interactions

Project description

InteractFlow

Python Version License: MIT PyPI version Upload Python Package

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 recordings directory.

Playing Back Recordings

Play a recorded session:

interactflow play recordings/your_recording.json

Adjust playback speed:

interactflow play 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.src.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.src.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.2.tar.gz (7.3 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.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file interactflow-1.0.2.tar.gz.

File metadata

  • Download URL: interactflow-1.0.2.tar.gz
  • Upload date:
  • Size: 7.3 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.2.tar.gz
Algorithm Hash digest
SHA256 01a4a31890de96507ce0496d7ed1de316e315b6ac580e17d30e7525ee1e09f20
MD5 59f26a4a3999fec56e8f0fb667c063bf
BLAKE2b-256 a497e24d7a440eecacebb462b97ef79f1616b3d0c9d8dc52a07aa49ad1165943

See more details on using hashes here.

File details

Details for the file interactflow-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: interactflow-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d74a45047562b974da83e7867f66a6efe2a92f42ed62e8994583fd451a727995
MD5 5fe7448dbcd7776b09ff12adee7377c6
BLAKE2b-256 8bcec54523780cab9ac91b1b26d42032daa2d3fb35d86294e7308c8b732506e4

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