Snippets

Lucas Correia API Example - Create media in encoding state

You are viewing an old version of this snippet. View the current version.
Revised by Lucas Correia b787a3f
# :coding: utf-8
# # :copyright: Copyright (c) 2020 ftrack
import json

import ftrack_api
session = ftrack_api.Session()

PROJECT_NAME = 'foo'
PATH_TO_MEDIA = '/Users/lucas/Downloads/Test media/test-file-01.mp4'


def upload_media(asset_version, file_path, name='ftrackreview-mp4'):
    server_location = session.get('Location', ftrack_api.symbol.SERVER_LOCATION_ID)
    component = asset_version.create_component(
        path=file_path,
        data={'name': name},
        location=server_location
    )
    return component


def create_asset(parent, name, asset_type=None):
    if asset_type is None:
        asset_type = session.query('AssetType where name is "Upload"').one()

    asset = session.create('Asset', {
        'name': name,
        'type': asset_type,
        'parent': parent
    })
    session.commit()
    asset_version = session.create('AssetVersion', {
        'asset': asset
    })
    session.commit()
    return asset_version


def clean_up(project):
    previous_assets = session.query('Asset where name like "Test %" and context_id is "{}"'.format(project['id']))
    for asset in previous_assets:
        session.delete(asset)
    session.commit()


def main():
    project = session.query('Project where name is "{}"'.format(PROJECT_NAME)).one()
    clean_up(project)

    asset_version = create_asset(project, 'Test 1 (Encoding)')
    component = upload_media(asset_version, PATH_TO_MEDIA)
    component['metadata']['ftr_meta'] = 'encoding'
    session.commit()

    asset_version = create_asset(project, 'Test 2 (Processing additional resolutions)')
    component_1 = upload_media(asset_version, PATH_TO_MEDIA)
    component_1['metadata']['ftr_meta'] = json.dumps({
        'frameIn': 0,
        'frameOut': 150,
        'frameRate': 25,
        'width': 1280,
        'height': 720,
    })
    component_2 = session.create('FileComponent', {
        'version_id': asset_version['id'],
        'name': 'ftrackreview-mp4-1080',
        'file_type': '.mp4',
    })
    component_2['metadata']['ftr_meta'] = 'encoding'
    session.commit()

    asset_version = create_asset(project, 'Test 3 (Complete)')
    component_1 = upload_media(asset_version, PATH_TO_MEDIA)
    component_1['metadata']['ftr_meta'] = json.dumps({
        'frameIn': 0,
        'frameOut': 150,
        'frameRate': 25,
        'width': 1280,
        'height': 720,
    })
    component_2 = upload_media(asset_version, PATH_TO_MEDIA, 'ftrackreview-mp4-1080')
    component_2['metadata']['ftr_meta'] = json.dumps({
        'frameIn': 0,
        'frameOut': 150,
        'frameRate': 25,
        'width': 1920,
        'height': 1080,
    })
    session.commit()


if __name__ == '__main__':
    main()
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.