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
Metadata
Release files for aspect-sdk 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aspect_sdk-0.0.6.tar.gz | 44.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aspect_sdk-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 147.8 kB
Release files / aspect_sdk-0.0.6.tar.gz
| Download URL | aspect_sdk-0.0.6.tar.gz |
|---|---|
| Size | 44.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa9136eac0afcd4f233266db0a4a164bac427b233886490660bad596fdaf8fc3
|
|
BLAKE2b-256 checksum How to use checksums |
ee71c4566caa2c6f00f7df2aeeb7a380e8d03c21c1b97d1d9cf49c3487eb9621
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / aspect_sdk-0.0.6-py3-none-any.whl
| Download URL | aspect_sdk-0.0.6-py3-none-any.whl |
|---|---|
| Size | 103.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c154d5afab872f0976cb045578c1c13f76b6bef700a6ff191a3752475429044
|
|
BLAKE2b-256 checksum How to use checksums |
9498dac3e0a67e3d4f9b2ccc36fee4ddbb096ccbb63189295d52558b27f1d6ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|