"""Activity to write ProRes and h264 videos locations to video asset table.""" import json from video.constants import assets from video.constants import job_io_fields from video.logic.activity_task_logger import activity_task_logger from video.models.ows_video import get_track_video_duration from video.models.ows_video import get_track_video_resolution from video.models.ows_video import upsert_video_asset def get_h264_asset_type(inputs): """Get the correct asset_type to use by video resolution. Args: inputs (dict): Inputs. Returns: asset_type (string): The H264 asset_type. """ mezzanine_metadata = json.loads( inputs[job_io_fields.PRORES_MEZZANINE_METADATA]) track_video_resolution = get_track_video_resolution( mezzanine_metadata) return assets.RESOLUTION_TO_ASSET_TYPE_TEMPLATE_MAP[track_video_resolution] @activity_task_logger([ job_io_fields.PRODUCT_ID, job_io_fields.TUID, job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY, job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY, job_io_fields.PRORES_MEZZANINE_METADATA, ]) def write_mezz_video_locations_to_video_asset_table(inputs): """Write video asset type and asset path locations to video asset table. Args: inputs (dict): Inputs. """ upsert_video_asset({ 'product_id': inputs[job_io_fields.PRODUCT_ID], 'asset_type': job_io_fields.VIDEO_MASTER, 'asset_path': inputs[job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY], 'tuid': inputs[job_io_fields.TUID], 'duration': get_track_video_duration( inputs[job_io_fields.PRORES_MEZZANINE_METADATA] ), }) output = { job_io_fields.VIDEO_MASTER: inputs[job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY] } h264_asset_type = get_h264_asset_type(inputs) if h264_asset_type is not None: upsert_video_asset({ 'product_id': inputs[job_io_fields.PRODUCT_ID], 'asset_type': h264_asset_type, 'asset_path': inputs[job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY], 'tuid': inputs[job_io_fields.TUID], 'duration': get_track_video_duration( inputs[job_io_fields.PRORES_MEZZANINE_METADATA] ), }) output[h264_asset_type] = ( inputs[job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY] ) return output