Skip to main content

A powerful tool for recording and replaying user interactions

Project description

InteractFlow

Python Version License: MIT PyPI version

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 ❤️ by the InteractFlow Team

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.0.tar.gz (7.1 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.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: interactflow-1.0.0.tar.gz
  • Upload date:
  • Size: 7.1 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.0.tar.gz
Algorithm Hash digest
SHA256 d15ba0aa87388d6a0bdf1a7b346dc9cdf19af17d150afd1795cd144fcaa1d6af
MD5 f67aba68f17675e0d9bd76822bbba901
BLAKE2b-256 3921f071b31c5edf7eb48b248e18899e6d4562057a9a2dbe1a0d7b4518ae13f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: interactflow-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2b7e3778f4fe1240c1f29b98a3702dc2342e6aff9cc68a1693fc1e82796dceed
MD5 facde530693cb651a3e5e615e4707c9e
BLAKE2b-256 b853764a7a9c2bb17e83189e993e139d66231aa75d3bbb4f84aba850fea736c8

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