Python SDK for NomadicML's DriveMonitor API
Project description
NomadicML Python SDK
A Python client library for the NomadicML DriveMonitor API, allowing you to upload and analyze driving videos programmatically.
Installation
From PyPI (for users)
pip install nomadicml
For Development (from source)
To install the package in development mode, where changes to the code will be immediately reflected without reinstallation:
# Clone the repository
git clone https://github.com/nomadic-ml/drivemonitor.git
cd sdk
# For development: Install in editable mode
pip install -e .
With this installation, any changes you make to the code will be immediately available when you import the package.
Quick Start
from nomadicml import NomadicML
# Initialize the client with your API key
client = NomadicML(api_key="your_api_key")
# Upload a video and analyze it in one step
result = client.video.upload_and_analyze("path/to/your/video.mp4")
# Print the detected events
for event in result["events"]:
print(f"Event: {event['type']} at {event['time']}s - {event['description']}")
#For a batch upload
videos_list = [.....]#list of video paths
batch_results = client.video.upload_and_analyze_videos(videos_list, wait_for_completion=False)
video_ids = [
res.get("video_id")
for res in batch_results
if res # safety for None
]
full_results = client.video.wait_for_analyses(video_ids)
Authentication
You need an API key to use the NomadicML API. You can get one by:
- Log in to your DriveMonitor account
- Go to Profile > API Key
- Generate a new API key
Then use this key when initializing the client:
client = NomadicML(api_key="your_api_key")
Video Upload and Analysis
Upload a video
# Upload a local video file
result = client.video.upload_video(
source="file",
file_path="path/to/video.mp4"
)
# Or upload from YouTube
result = client.video.upload_video(
source="youtube",
youtube_url="https://www.youtube.com/watch?v=VIDEO_ID"
)
# Get the video ID from the response
video_id = result["video_id"]
Analyze a video
# Start analysis
client.video.analyze_video(video_id)
# Wait for analysis to complete
status = client.video.wait_for_analysis(video_id)
# Get analysis results
analysis = client.video.get_video_analysis(video_id)
# Get detected events
events = client.video.get_video_events(video_id)
Upload and analyze in one step
# Upload and analyze a video, waiting for results
analysis = client.video.upload_and_analyze("path/to/video.mp4")
# Or just start the process without waiting
result = client.video.upload_and_analyze("path/to/video.mp4", wait_for_completion=False)
Advanced Usage
Filter events by severity or type
# Get only high severity events
high_severity_events = client.video.get_video_events(
video_id=video_id,
severity="high"
)
# Get only traffic violation events
traffic_violations = client.video.get_video_events(
video_id=video_id,
event_type="Traffic Violation"
)
Custom timeout and polling interval
# Wait for analysis with a custom timeout and polling interval
client.video.wait_for_analysis(
video_id=video_id,
timeout=1200, # 20 minutes
poll_interval=10 # Check every 10 seconds
)
Custom API endpoint
If you're using a custom deployment of the DriveMonitor backend:
# Connect to a local or custom deployment
client = NomadicML(
api_key="your_api_key",
base_url="http://localhost:8099"
)
Search across videos
Run a semantic search on several of your videos at once:
results = client.video.search_videos(
"red pickup truck overtaking",
["vid123", "vid456"]
)
for match in results["matches"]:
print(match["videoId"], match["eventIndex"], match["similarity"])
Error Handling
The SDK provides specific exceptions for different error types:
from nomadicml import NomadicMLError, AuthenticationError, VideoUploadError
try:
client.video.upload_and_analyze("path/to/video.mp4")
except AuthenticationError:
print("API key is invalid or expired")
except VideoUploadError as e:
print(f"Failed to upload video: {e}")
except NomadicMLError as e:
print(f"An error occurred: {e}")
Development
Setup
Clone the repository and install development dependencies:
git clone https://github.com/nomadicml/nomadicml-python.git
cd nomadicml-python
pip install -e ".[dev]"
Running tests
pytest
License
MIT License. See LICENSE file for details.
Project details
Release history Release notifications | RSS feed
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 nomadicml-0.1.7.tar.gz.
File metadata
- Download URL: nomadicml-0.1.7.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40cf46ccde0d274982644eac93b2c8d798dfa3b18239e9fd8e24dec6824e8228
|
|
| MD5 |
51a732211d89cc7bdffe1a38ae68f195
|
|
| BLAKE2b-256 |
3f3db8cb4be443bb9325f91d62a8fa26289d6f2b11a827ca80a7a8b7eaebff3d
|
File details
Details for the file nomadicml-0.1.7-py3-none-any.whl.
File metadata
- Download URL: nomadicml-0.1.7-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c57b44458bf15dd55b1b69d8d52c97b7a858c84085ed535733b28ed2144651f
|
|
| MD5 |
32cf00b5e669021f565e3bc5df45294c
|
|
| BLAKE2b-256 |
b498a8d5b8efd6ac409b60fe47924ed4eec52b72afce330e1740443c32b3a85d
|