Skip to main content

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:

  1. Log in to your DriveMonitor account
  2. Go to Profile > API Key
  3. 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"
)

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nomadicml-0.0.7.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

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

nomadicml-0.0.7-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file nomadicml-0.0.7.tar.gz.

File metadata

  • Download URL: nomadicml-0.0.7.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for nomadicml-0.0.7.tar.gz
Algorithm Hash digest
SHA256 4da02c99b2aaa2bfdf50e8fafc284391ac59e7816bafd72c1346658939e217dc
MD5 899897f6b3568dd47be609f2767ee2ed
BLAKE2b-256 16e0e209de99b62bec3c5b5a4fc7bcc262d1e8c90bb0aee0e8ce6102c3d3f5c0

See more details on using hashes here.

File details

Details for the file nomadicml-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: nomadicml-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for nomadicml-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e7beb5d8cdfac54a5e1ee8364b6c91fa500595289ca4cbaa3dfc1b6ab3556e19
MD5 9f68c1cb551a53fdee0fce27880dd4fc
BLAKE2b-256 6459b5dbb76eea0f825fc1b861191b21952a5d62cb17d7e2ccf322f024d0c6ea

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