Python SDK for Aspect Media Engine API
Project description
Aspect Python SDK
This SDK delivers an intuitive interface for building applications with Aspect's video intelligence platform. Designed for Python developers, it provides comprehensive methods for video analysis, search, and management while eliminating complex integration overhead and reducing development time.
Installation
pip install aspect-sdk
Usage
Initialize the Aspect client
Sign up for your api key here and then head to the Api keys tab
from aspect_sdk import Aspect, AspectConfig
client = Aspect(AspectConfig(
api_key='your-api-key', # Required: Your API key
))
Create an Index
Indexes are organizational containers for your assets. Think of them like folders or collections.
from aspect_sdk import IndexCreateRequest
index = client.indexes.create(IndexCreateRequest(
name='My Video Collection',
description='Collection of marketing videos',
features=['embedding'] # Optional: specify which AI features to run by default on all assets when they're created in this index
))
print('Created index:', index.id)
Create an Asset
Assets are videos or images that get AI-indexed by the system. You can upload from a file path, URL, or file object.
from aspect_sdk import AssetCreateRequest
# Upload from file path
response = client.assets.create(AssetCreateRequest(
index_id=index.id,
name='video.mp4',
asset_file='/path/to/video.mp4',
# asset_url='https://example.com/video.mp4', # can also optionally pass a url instead of file
save_original=True, # Whether to store the original file
features=['transcription'] # Optional: specify which AI features to additionally run specifically for this asset (union with index default features)
))
asset_id = response.asset_id
task_id = response.task_id
print('Created asset from file:', asset_id)
# Wait on the asset to finish indexing its features
task = client.tasks.wait_for_done(task_id, WaitForDoneOptions(
interval=5000,
callback=lambda task: print(task.features)
))
if task.features.transcription.state == "failed":
raise Exception("Transcription failed")
Search Assets
Search across your indexed video content using natural language queries.
# Basic search
search_results = client.search.run({
'index_id': index.id,
'query': "",
})
print("Search results", search_results)
# Note: The search API is currently being developed and will support
# parameters like filters, sorting, and pagination
API Structure
The SDK is organized into resource-based modules:
client.indexes- Create and manage indexes (collections)client.assets- Upload and manage video assetsclient.search- Search across indexed contentclient.tasks- Monitor processing tasksclient.users- User account managementclient.analyze- AI analysis operations
Asset Processing
When you create an asset, Aspect automatically runs tasks for the playground:
- Proxies - Optimized versions for streaming
- Previews - Thumbnail images and preview clips
You can choose to run these AI jobs whenever you want (either through index's default features, assets.create, or tasks.create):
- Transcription - Speech-to-text extraction
- Embedding - Semantic vector embeddings for search
You can monitor processing status through the task polling system or via webhooks.
Type Safety
This SDK is built with type safety in mind using Pydantic models and type hints:
from aspect_sdk import (
IndexCreateRequest,
AssetCreateResponse,
AspectConfig,
WaitForDoneOptions,
)
Error Handling
from aspect_sdk import ApiException
try:
asset = client.assets.create(AssetCreateRequest(
index_id='invalid-id',
name='video.mp4',
asset_file='/path/to/video.mp4',
save_original=True
))
except ApiException as error:
print('Failed to create asset:', str(error))
Advanced Usage
File Input Types
The SDK supports multiple file input types for asset creation:
# File path (string)
asset = client.assets.create(AssetCreateRequest(
index_id=index_id,
name='video.mp4',
asset_file='/path/to/video.mp4',
save_original=True
))
# Pathlib.Path object
from pathlib import Path
asset = client.assets.create(AssetCreateRequest(
index_id=index_id,
name='video.mp4',
asset_file=Path('/path/to/video.mp4'),
save_original=True
))
# Raw bytes
with open('/path/to/video.mp4', 'rb') as file:
video_bytes = file.read()
asset = client.assets.create(AssetCreateRequest(
index_id=index_id,
name='video.mp4',
asset_file=video_bytes,
save_original=True
))
# File-like object
with open('/path/to/video.mp4', 'rb') as file:
asset = client.assets.create(AssetCreateRequest(
index_id=index_id,
name='video.mp4',
asset_file=file,
save_original=True
))
License
MIT 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 aspect_sdk-0.0.3.tar.gz.
File metadata
- Download URL: aspect_sdk-0.0.3.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2461577f8d4fa72b0648626ebf8b4d1a1e4efdf0b19fc6339e7bb76fbcf5933
|
|
| MD5 |
63af32fc0f61f12e9864d77714c44468
|
|
| BLAKE2b-256 |
178b814d334e17a88eacdca568d20e031da9dec1d957413163b1488cdfc84df1
|
File details
Details for the file aspect_sdk-0.0.3-py3-none-any.whl.
File metadata
- Download URL: aspect_sdk-0.0.3-py3-none-any.whl
- Upload date:
- Size: 101.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4b73fc2d8f0eb02b830682ffeb29c6703e533d1e2303f4cbe1daa20348eb60
|
|
| MD5 |
3b0eac39fb75a4ba411d89f6b5508b65
|
|
| BLAKE2b-256 |
6b672a045a81a7b89ce0813075df7e73a01503ab27d6251e44a6ce87c3356aef
|