Manage videos

The resources.Video class provides methods to manage the videos you've uploaded to the platform.

Methods

Retrieve video information

Description: This method retrieves information about the specified video.

Function signature and example:

def retrieve(
    self,
    index_id: str,
    id: str,
    *,
    embed: Optional[bool] = None,
    **kwargs,
) -> models.Video
def print_segments(segments: List[SegmentEmbedding], max_elements: int = 5):
    for segment in segments:
        print(
            f"  embedding_scope={segment.embedding_scope} start_offset_sec={segment.start_offset_sec} end_offset_sec={segment.end_offset_sec}"
        )
        print(f"  embeddings: {segment.embeddings_float[:max_elements]}")

video = client.index.video.retrieve(index_id="<YOUR_INDEX_ID>", id="<YOUR_VIDEO_ID>", embed=True)

print(f"ID: {video.id}")
print(f"Created at: {video.created_at}")
print(f"Updated at: {video.updated_at}")
print(f"Indexed at: {video.indexed_at}")
print("Metadata:")
print(f"  Filename: {video.metadata.filename}")
print(f"  Duration: {video.metadata.duration}")
print(f"  FPS: {video.metadata.fps}")
print(f"  Width: {video.metadata.width}")
print(f"  Height: {video.metadata.height}")
print(f"  Size: {video.metadata.size}")
if video.hls:
    print("HLS:")
    print(f"  Video URL: {video.hls.video_url}")
    print("  Thumbnail URLs:")
    for url in video.hls.thumbnail_urls or []:
        print(f"    {url}")
    print(f"  Status: {video.hls.status}")
    print(f"  Updated At: {video.hls.updated_at}")
if video.source:
    print("Source:")
    print(f"  Type: {video.source.type}")
    print(f"  Name: {video.source.name}")
    print(f"  URL: {video.source.url}")
if video.embedding:
    print(f"Engine_name={video.embedding.engine_name}")
    print("Embeddings:")
    print_segments(video.embedding.video_embedding.segments)

Parameters:

NameTypeRequiredDescription
**kwargsdictNoAdditional keyword arguments for the request.
index_idstrYesThe unique identifier of the index to which the video has been uploaded.
idstrYesThe unique identifier of the video to retrieve.
embedboolNoSet this parameter to True to retrieve the video embedding in the response.

Return value: Returns a models.Video object representing the retrieved video.

API Reference: For a description of each field in the request and response, see the Retrieve video information page.

List videos with direct pagination

Description: This method returns a paginated list of the videos in the specified index based on the provided parameters. Choose this method mainly when the total number of items is manageable, or you must fetch a single page of results. By default, the platform returns your videos sorted by their upload date, with the newest at the top of the list.

Function signature and example:

def list(
    self,
    index_id: str,
    *,
    id: Optional[str] = None,
    filename: Optional[str] = None,
    size: Optional[Union[int, Dict[str, int]]] = None,
    width: Optional[Union[int, Dict[str, int]]] = None,
    height: Optional[Union[int, Dict[str, int]]] = None,
    duration: Optional[Union[int, Dict[str, int]]] = None,
    fps: Optional[Union[int, Dict[str, int]]] = None,
    metadata: Optional[Dict[str, Any]] = None,
    created_at: Optional[Union[str, Dict[str, str]]] = None,
    updated_at: Optional[Union[str, Dict[str, str]]] = None,
    indexed_at: Optional[Union[str, Dict[str, str]]] = None,
    page: Optional[int] = None,
    page_limit: Optional[int] = None,
    sort_by: Optional[str] = None,
    sort_option: Optional[str] = None,
    **kwargs
) -> RootModelList[models.Video]
videos = client.index.video.list(
    index_id="<YOUR_INDEX_ID>",
    id="<YOUR_VIDEO_ID>",
    filename="<YOUR_FILENAME>",
    size=1024,
    width=920,
    height=1080,
    duration=100,
    fps=30,
    metadata={"category": "nature"},
    created_at="2024-09-17T07:53:46.365Z",
    updated_at="2024-09-17T07:53:46.365Z",
    indexed_at="2024-09-17T07:55:22.125Z",
    page=1,
    page_limit=5,
    sort_by="created_at",
    sort_option="desc"
)
for video in videos:
    print(f"ID: {video.id}")
    print(f"  Created at: {video.created_at}")
    print(f"  Updated at: {video.updated_at}")
    print(f"  Indexed at: {video.indexed_at}")
    print("  Metadata:")
    print(f"    Filename: {video.metadata.filename}")
    print(f"    Duration: {video.metadata.duration}")
    print(f"    FPS: {video.metadata.fps}")
    print(f"    Width: {video.metadata.width}")
    print(f"    Height: {video.metadata.height}")
    print(f"  Size: {video.metadata.size}")
    if video.hls:
        print("  HLS:")
        print(f"    Video URL: {video.hls.video_url}")
        print("    Thumbnail URLs:")
        for url in video.hls.thumbnail_urls or []:
            print(f"      {url}")
        print(f"    Status: {video.hls.status}")
        print(f"    Updated At: {video.hls.updated_at}")
    if video.source:
        print("  Source:")
        print(f"    Type: {video.source.type}")
        print(f"    Name: {video.source.name}")
        print(f"    URL: {video.source.url}")

Parameters:

NameTypeRequiredDescription
index_idstrYesThe unique identifier of the index for which the API will retrieve the videos.
idOptional[str]NoFilter by the unique identifier of a video.
filenameOptional[str]NoFilter by the name of the video file.
sizeOptional[Union[int, Dict[str, int]]]NoFilter by the size of the video file. This parameter can be an integer or a dictionary for range queries.
widthOptional[Union[int, Dict[str, int]]]NoFilter by the width of the video. This parameter can be an integer or a dictionary for range queries.
heightOptional[Union[int, Dict[str, int]]]NoFilter by the height of the video. This parameter can be an integer or a dictionary for range queries.
durationOptional[Union[int, Dict[str, int]]]NoFilter by the duration of the video. This parameter can be an integer or a dictionary for range queries.
fpsOptional[Union[int, Dict[str, int]]]NoFilter by the number frames per second. This parameter can be an integer or a dictionary for range queries.
metadataOptional[Dict[str, Any]]NoFilter by metadata.
created_atOptional[Union[str, Dict[str, str]]]NoFilter by the creation date. This parameter can be a string or a dictionary for range queries.
updated_atOptional[Union[str, Dict[str, str]]]NoFilter by the last update date. This parameter can be a string or a dictionary for range queries.
indexed_atOptional[Union[str, Dict[str, str]]]NoFilter by the indexing date. This parameter can be a string or a dictionary for range queries.
pageOptional[int]NoPage number for pagination.
page_limitOptional[int]NoNumber of items per page.
sort_byOptional[str]NoField to sort by.
sort_optionOptional[str]NoSort order. You can specify one of the following values: "asc" or "desc".
**kwargsdictNoAdditional keyword arguments for the request.

Return value: Returns a RootModelList containing models.Video objects, representing the list of videos that match the specified criteria.

API Reference: For a description of each field in the request and response, see the List videos page.

Related guides:

List videos with iterative pagination

Description: This method iterates through a paginated list of the videos in the specified index based on the provided parameters. Choose this method mainly when your application must retrieve a large number of items. By default, the API returns your videos sorted by creation date, with the newest at the top of the list.

Function signature and example:

def list_pagination(
    self,
    index_id: str,
    *,
    id: Optional[str] = None,
    filename: Optional[str] = None,
    size: Optional[Union[int, Dict[str, int]]] = None,
    width: Optional[Union[int, Dict[str, int]]] = None,
    height: Optional[Union[int, Dict[str, int]]] = None,
    duration: Optional[Union[int, Dict[str, int]]] = None,
    fps: Optional[Union[int, Dict[str, int]]] = None,
    metadata: Optional[Dict[str, Any]] = None,
    created_at: Optional[Union[str, Dict[str, str]]] = None,
    updated_at: Optional[Union[str, Dict[str, str]]] = None,
    indexed_at: Optional[Union[str, Dict[str, str]]] = None,
    page: Optional[int] = None,
    page_limit: Optional[int] = None,
    sort_by: Optional[str] = None,
    sort_option: Optional[str] = None,
    **kwargs
) -> models.VideoListWithPagination
def print_page(page):
    for video in page:
        print(f"ID: {video.id}")
        print(f"  Created at: {video.created_at}")
        print(f"  Updated at: {video.updated_at}")
        print(f"  Indexed at: {video.indexed_at}")
        print("  Metadata:")
        print(f"    Filename: {video.metadata.filename}")
        print(f"    Duration: {video.metadata.duration}")
        print(f"    FPS: {video.metadata.fps}")
        print(f"    Width: {video.metadata.width}")
        print(f"    Height: {video.metadata.height}")
        print(f"    Size: {video.metadata.size}")
        if video.hls:
            print("  HLS:")
            print(f"    Video URL: {video.hls.video_url}")
            print("    Thumbnail URLs:")
            for url in video.hls.thumbnail_urls or []:
                print(f"      {url}")
            print(f"    Status: {video.hls.status}")
            print(f"    Updated At: {video.hls.updated_at}")
        if video.source:
            print("  Source:")
            print(f"    Type: {video.source.type}")
            print(f"    Name: {video.source.name}")
            print(f"    URL: {video.source.url}")

# Fetch the initial page of results
video_paginator = client.index.video.list_pagination(
    index_id="<YOUR_INDEX_ID>",
    id="<YOUR_VIDEO_ID",
    filename="01.mp4",
    size=1024,
    width=920,
    height=1080,
    duration=100,
    fps=30,
    metadata={"category": "nature"},
    created_at="2024-09-17T07:53:46.365Z",
    updated_at="2024-09-17T07:53:46.365Z",
    indexed_at="2024-09-17T07:55:22.125Z",
    page=1,
    page_limit=5,
    sort_by="created_at",
    sort_option="desc"
)

# Print the first page of results
print_page(video_paginator.data)

# Iterate through subsequent pages
while True:
    try:
        next_task_page = next(video_paginator)
        print_page(next_task_page)
    except StopIteration:
        break

Parameters:

NameTypeRequiredDescription
index_idstrYesThe unique identifier of the index for which the API will retrieve the videos.
idOptional[str]NoFilter by the unique identifier of a video.
filenameOptional[str]NoFilter by the name of the video file.
sizeOptional[Union[int, Dict[str, int]]]NoFilter by the size of the video file. This parameter can be an integer or a dictionary for range queries.
widthOptional[Union[int, Dict[str, int]]]NoFilter by the width of the video. This parameter can be an integer or a dictionary for range queries.
heightOptional[Union[int, Dict[str, int]]]NoFilter by the height of the video. This parameter can be an integer or a dictionary for range queries.
durationOptional[Union[int, Dict[str, int]]]NoFilter by the duration of the video. This parameter can be an integer or a dictionary for range queries.
fpsOptional[Union[int, Dict[str, int]]]NoFilter by the number of frames per second. This parameter can be an integer or a dictionary for range queries.
metadataOptional[Dict[str, Any]]NoFilter by metadata.
created_atOptional[Union[str, Dict[str, str]]]NoFilter by the creation date. This parameter can be a string or a dictionary for range queries.
updated_atOptional[Union[str, Dict[str, str]]]NoFilter by the last update date. This parameter can be a string or a dictionary for range queries.
indexed_atOptional[Union[str, Dict[str, str]]]NoFilter by the indexing date. This parameter can be a string or a dictionary for range queries.
pageOptional[int]NoPage number for pagination.
page_limitOptional[int]NoNumber of items per page.
sort_byOptional[str]NoField to sort by.
sort_optionOptional[str]NoSort order. You can specify one of the following values: "asc" or "desc".
**kwargsdictNoAdditional keyword arguments for the request.

Return value: Returns a models.VideoListWithPagination object, containing the list of videos that match the specified criteria and pagination information.

📘

Note

To retrieve subsequent pages of results, use the iterator protocol:

  1. Call the next function, passing the VideoListWithPagination object as a parameter.
  2. Repeat this call until a StopIteration exception occurs, indicating no more pages exist.

API Reference: For a description of each field in the request and response, see the List videos page.

Related guides:

Update video information

Description: This method updates the title and metadata of a video.

Function signature and example:

def update(
    self,
    index_id: str,
    id: str,
    *,
    title: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    **kwargs
) -> None
client.index.video.update(
    index.id, video.id, title="<YOUR_VIDEO_TITLE>", metadata={"from_sdk": True}
)

Parameters:

NameTypeRequiredDescription
index_idstrYesThe unique identifier of the index to which the video has been uploaded.
idstrYesThe unique identifier of the video.
titleOptional[str]NoThe new title for the video
metadataOptional[Dict[str, Any]]NoA dictionary containing the metadata you want to update or add. Note that only the provided properties are modified; the omitted properties remain unchanged.
**kwargsdictNoAdditional keyword arguments for the request.

Return value: None. The method doesn't return any value.

API Reference: For a description of each field in the request, see the Update video information page.

Delete video information

Description: This method deletes all the information about the specified video. This action cannot be undone.

Function signature and example:

def delete(self, index_id: str, id: str, **kwargs) -> None
client.task.delete(index_id="<YOUR_INDEX_ID>", id="<YOUR_VIDEO_ID>")

Parameters:

NameTypeRequiredDescription
index_idstringYesThe unique identifier of the index to which the video has been uploaded.
idstringYesThe unique identifier of the video to delete.
**kwargsdictNoAdditional keyword arguments for the request.

Return value: None. The method doesn't return any value.

API Reference: Delete video information.