faker-clickstream 0.1.1
Clickstream Faker Provider for Python.
License: Apache License, Version 2.0
Requires Python: >=3.6

# Clickstream Faker Provider for Python

- [Clickstream Faker Provider for Python](#clickstream-faker-provider-for-python)
  * [Purpose](#purpose)
  * [Installation](#installation)
  * [Usage](#usage)
  * [Features](#features)
  * [Contributing](#contributing)

## Purpose

This is a custom `Faker` provider for Python that generates clickstream session data. Data generated from this provider
represent user clickstream sessions on an online e-commerce site that sells mobile phones.

## Installation

The Clickstream Faker Provider for Python is available to install from PyPi using `pip`.

```bash
pip install faker_clickstream
```

## Usage

Sample code of Clickstream Provider usage.

```python
from faker import Faker
from faker_clickstream import ClickstreamProvider

fake = Faker()
fake.add_provider(ClickstreamProvider)
fake.session_clickstream()

# or...
fake.session_clickstream(rand_session_max_size=50)  # random number of events from 1 to 50
```

The `session_clickstream()` method returns an array of JSON objects that represents a unique web session. By default, is
configured to return a random number of session events from the range of 1 through 25.

An example response object is the below:

```json
[
  {
    "ip": "85.59.39.221",
    "user_id": 777198,
    "user_agent": "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/45.0.2454.68 Mobile/11D257 Safari/9537.53",
    "session_id": "d5cba274f7724780d1ed2b60650101892260748df21b0e2fb8b2b2fd88cedf23",
    "event_time": "28/03/2022 23:09:48.360212",
    "event_name": "AddToCart",
    "channel": "Social media",
    "metadata": {
      "product_id": 162012,
      "quantity": 1
    }
  },
  {
    "ip": "85.59.39.221",
    "user_id": 777198,
    "user_agent": "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/45.0.2454.68 Mobile/11D257 Safari/9537.53",
    "session_id": "d5cba274f7724780d1ed2b60650101892260748df21b0e2fb8b2b2fd88cedf23",
    "event_time": "28/03/2022 23:14:13.360227",
    "event_name": "AddToCart",
    "channel": "Social media",
    "metadata": {
      "product_id": 464710,
      "quantity": 2
    }
  },
  {
    "ip": "85.59.39.221",
    "user_id": 777198,
    "user_agent": "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/45.0.2454.68 Mobile/11D257 Safari/9537.53",
    "session_id": "d5cba274f7724780d1ed2b60650101892260748df21b0e2fb8b2b2fd88cedf23",
    "event_time": "28/03/2022 23:17:49.360241",
    "event_name": "Checkout",
    "channel": "Social media",
    "metadata": {}
  },
  {
    "ip": "85.59.39.221",
    "user_id": 777198,
    "user_agent": "Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/45.0.2454.68 Mobile/11D257 Safari/9537.53",
    "session_id": "d5cba274f7724780d1ed2b60650101892260748df21b0e2fb8b2b2fd88cedf23",
    "event_time": "28/03/2022 23:22:15.360252",
    "event_name": "Search",
    "channel": "Social media",
    "metadata": {
      "query": "Samsung"
    }
  }
]
```

## Features

Each user session includes some static data that are randomly calculated only once, such as the `ip`, `user_agent`, etc.

The events that are available on this clickstream are the following ones, and an event dependency has been configured to
provide a more real representation of a web session flow:

- `Search`
- `AddToCart`
- `DeleteFromCart` (depends on `AddToCart` event)
- `IncreaseQuantity`
- `DecreaseQuantity` (depends on `IncreaseQuantity` event)
- `AddPromoCode` (depends on `Checkout` event)
- `Checkout` (depends on `AddToCart` event)
- `Login`
- `Logout` (depends on `Login` event)
- `CheckoutAsGuest`
- `CompleteOrder` (depends on **any** of `Checkout` or `CheckoutAsGuest` events)
- `CheckOrderStatus` (depends on `Login` event)

Moreover, the `Search`, `AddToCart`, `IncreaseQuantity` `DeleteFromCart` & `CheckOrderStatus` include a metadata field
with additional information about the products and the user queries.

## Contributing

Feel free to support this project and contribute! Support this project by giving a star!