Skip to main content

Python SDK for Monitoro Herd

Project description

Herd Python SDK

A powerful SDK for controlling your own browser and other devices through the Herd platform. Similar to Puppeteer but with support for multiple devices and real-time events, and no infrastructure to setup.

Learn more about Herd at https://herd.garden.

Features

  • 🌐 Control multiple browsers and devices from a single client
  • ⛏️ Extract data from web pages
  • 🔍 Run automations and interact with webpages
  • 🤖 Build AI web tools that can use your own browser and accounts
  • 🚀 Familiar automation API similar to Puppeteer
  • 🧩 Python type hints for better IDE support

Installation

pip install monitoro-herd

Usage

Here's a basic example of how to use the SDK:

import asyncio
from monitoro_herd import HerdClient

async def example():
    # Create a client
    client = HerdClient(
        token='your-auth-token'
    )

    # Initialize the client (required before using)
    await client.initialize()

    try:
        # List available devices
        devices = await client.list_devices()
        print('Available devices:', devices)

        # Get a specific device
        device = await client.get_device('device-id')

        # Create a new page
        page = await device.new_page()

        # Navigate to a URL
        await page.goto('https://example.com')

        # Click an element
        await page.click('#submit-button')

        # Fill a form field
        await page.fill('#username', 'testuser')

        # Extract data
        data = await page.extract({
            'title': 'h1',
            'description': '.description',
            'items': {
                'price': '.item-price',
                'name': '.item-name'
            }
        })
        print('Extracted data:', data)

        # Subscribe to device events
        def handle_event(event):
            print('Device event:', event)

        unsubscribe = device.on_event(handle_event)

        # Cleanup
        unsubscribe()
        await page.close()
        await device.close()
    finally:
        # Always close the client when done
        await client.close()

# Run the example
asyncio.run(example())

Features

  • Asynchronous API using asyncio
  • Device management
  • Browser automation
  • Event subscription
  • Data extraction
  • Automatic reconnection handling
  • Type hints for better IDE support

API Reference

Complete API reference is available at https://herd.garden/docs/reference.

HerdClient

The main client class for interacting with the Herd platform.

client = HerdClient(token: str)

Methods:

  • initialize() - Initialize the client and connect to NATS
  • list_devices() - Get a list of available devices
  • get_device(device_id: str) - Get a specific device
  • register_device(device_id: str, device_type: str, name: str = None) - Register a new device
  • close() - Close the client and cleanup resources

Device

Represents a device in the Herd platform.

Methods:

  • new_page() - Create a new page
  • list_pages() - List all pages
  • get_page(page_id: int) - Get a specific page
  • on_event(callback) - Subscribe to device events
  • close() - Close the device and cleanup resources

Page

Represents a browser page/tab.

Methods:

  • goto(url: str) - Navigate to a URL
  • click(selector: str, options: Dict = None) - Click an element
  • fill(selector: str, value: str, options: Dict = None) - Fill a form field
  • extract(selectors: Dict) - Extract data from the page
  • close() - Close the page

Error Handling

The SDK uses exceptions to handle errors. Make sure to handle these appropriately in your code:

try:
    await client.initialize()
except Exception as e:
    print(f"Failed to initialize client: {e}")

Best Practices

  1. Always use async/await with the SDK functions
  2. Initialize the client before using it
  3. Close resources when done using them
  4. Handle exceptions appropriately
  5. Use type hints for better code completion
  6. Subscribe to events when needed for real-time updates

Contact us

If you have any questions or feedback, please contact us at pypi@herd.garden.

License

EULA - see LICENSE

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

monitoro_herd-0.1.3.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

monitoro_herd-0.1.3-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file monitoro_herd-0.1.3.tar.gz.

File metadata

  • Download URL: monitoro_herd-0.1.3.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for monitoro_herd-0.1.3.tar.gz
Algorithm Hash digest
SHA256 496184783437b55f02293c0bb1b3b8bbdfb85cffbc42580176b345208b1124a4
MD5 5d0d4b23f027504dfc69925a5c04d30c
BLAKE2b-256 d5b27b0add6738d487613064fdbbf5c6ceedf9455184a7dde3d2a5dd64a14c3d

See more details on using hashes here.

File details

Details for the file monitoro_herd-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: monitoro_herd-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for monitoro_herd-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9eeef0554bdefc5a61eb2986993721d0b989e801f9354b0c20c9dc5992ffc7ce
MD5 bc9bcc5ba7b7ba16126a741307e4803c
BLAKE2b-256 de4593663f2171f2fe186f7f5d2710ce37faf16940b23231d29da948f446df01

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