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 NATSlist_devices()- Get a list of available devicesget_device(device_id: str)- Get a specific deviceregister_device(device_id: str, device_type: str, name: str = None)- Register a new deviceclose()- Close the client and cleanup resources
Device
Represents a device in the Herd platform.
Methods:
new_page()- Create a new pagelist_pages()- List all pagesget_page(page_id: int)- Get a specific pageon_event(callback)- Subscribe to device eventsclose()- Close the device and cleanup resources
Page
Represents a browser page/tab.
Methods:
goto(url: str)- Navigate to a URLclick(selector: str, options: Dict = None)- Click an elementfill(selector: str, value: str, options: Dict = None)- Fill a form fieldextract(selectors: Dict)- Extract data from the pageclose()- 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
- Always use
async/awaitwith the SDK functions - Initialize the client before using it
- Close resources when done using them
- Handle exceptions appropriately
- Use type hints for better code completion
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
496184783437b55f02293c0bb1b3b8bbdfb85cffbc42580176b345208b1124a4
|
|
| MD5 |
5d0d4b23f027504dfc69925a5c04d30c
|
|
| BLAKE2b-256 |
d5b27b0add6738d487613064fdbbf5c6ceedf9455184a7dde3d2a5dd64a14c3d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eeef0554bdefc5a61eb2986993721d0b989e801f9354b0c20c9dc5992ffc7ce
|
|
| MD5 |
bc9bcc5ba7b7ba16126a741307e4803c
|
|
| BLAKE2b-256 |
de4593663f2171f2fe186f7f5d2710ce37faf16940b23231d29da948f446df01
|