From b85dd6f852cc56425024a08f0dc91a9a48996315 Mon Sep 17 00:00:00 2001 From: SP Mohanty <spmohanty91@gmail.com> Date: Tue, 30 Jul 2019 01:10:12 +0200 Subject: [PATCH] Upload and save reference to a randomly chosen static frame --- flatland/evaluators/aicrowd_helpers.py | 21 +++++++++++++++++++++ flatland/evaluators/service.py | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/flatland/evaluators/aicrowd_helpers.py b/flatland/evaluators/aicrowd_helpers.py index f368c4cc..662ab179 100644 --- a/flatland/evaluators/aicrowd_helpers.py +++ b/flatland/evaluators/aicrowd_helpers.py @@ -2,6 +2,8 @@ import os import boto3 import uuid import subprocess +import glob +import random ############################################################### # Expected Env Variables @@ -44,6 +46,25 @@ def is_grading(): os.getenv("AICROWD_IS_GRADING", False) +def upload_random_frame_to_s3(frames_folder): + all_frames = glob.glob(os.path.join(frames_folder, "*.png")) + random_frame = random.choice(all_frames) + s3 = get_boto_client() + if not S3_UPLOAD_PATH_TEMPLATE: + raise Exception("S3_UPLOAD_PATH_TEMPLATE not provided...") + if not S3_BUCKET: + raise Exception("S3_BUCKET not provided...") + + image_target_key = S3_UPLOAD_PATH_TEMPLATE.replace(".mp4", ".png").format(str(uuid.uuid4())) + s3.put_object( + ACL="public-read", + Bucket=S3_BUCKET, + Key=image_target_key, + Body=open(random_frame, 'rb') + ) + return image_target_key + + def upload_to_s3(localpath): s3 = get_boto_client() if not S3_UPLOAD_PATH_TEMPLATE: diff --git a/flatland/evaluators/service.py b/flatland/evaluators/service.py index e6616116..21a5e63f 100644 --- a/flatland/evaluators/service.py +++ b/flatland/evaluators/service.py @@ -483,9 +483,14 @@ class FlatlandRemoteEvaluationService: video_thumb_s3_key = aicrowd_helpers.upload_to_s3( video_thumb_output_path ) + static_thumbnail_s3_key = aicrowd_helpers.upload_random_frame_to_s3( + self.vizualization_folder_name + ) self.evaluation_state["score"]["media_content_type"] = "video/mp4" self.evaluation_state["score"]["media_large"] = video_s3_key self.evaluation_state["score"]["media_thumbnail"] = video_thumb_s3_key + + self.evaluation_state["meta"]["static_media_frame"] = static_thumbnail_s3_key else: print("[WARNING] Ignoring uploading of video to S3") -- GitLab