diff --git a/.github/workflows/upload_to_ynput_cloud.yml b/.github/workflows/upload_to_ynput_cloud.yml new file mode 100644 index 0000000000..7745a8e016 --- /dev/null +++ b/.github/workflows/upload_to_ynput_cloud.yml @@ -0,0 +1,16 @@ +name: 📤 Upload to Ynput Cloud + +on: + workflow_dispatch: + release: + types: [published] + +jobs: + call-upload-to-ynput-cloud: + uses: ynput/ops-repo-automation/.github/workflows/upload_to_ynput_cloud.yml@main + secrets: + CI_EMAIL: ${{ secrets.CI_EMAIL }} + CI_USER: ${{ secrets.CI_USER }} + YNPUT_BOT_TOKEN: ${{ secrets.YNPUT_BOT_TOKEN }} + YNPUT_CLOUD_URL: ${{ secrets.YNPUT_CLOUD_URL }} + YNPUT_CLOUD_TOKEN: ${{ secrets.YNPUT_CLOUD_TOKEN }} diff --git a/client/ayon_resolve/api/lib.py b/client/ayon_resolve/api/lib.py index 63806db306..122cb4cae8 100644 --- a/client/ayon_resolve/api/lib.py +++ b/client/ayon_resolve/api/lib.py @@ -1101,6 +1101,10 @@ def export_timeline_otio_to_file(timeline, filepath): """ try: from . import bmdvr + + if bmdvr.EXPORT_OTIO is None: + raise AttributeError("Unsupported native Export OTIO") + timeline.Export(filepath, bmdvr.EXPORT_OTIO) except Exception as error: diff --git a/client/ayon_resolve/plugins/publish/collect_plates.py b/client/ayon_resolve/plugins/publish/collect_plates.py index 2c92c9eb9d..040f4e186a 100644 --- a/client/ayon_resolve/plugins/publish/collect_plates.py +++ b/client/ayon_resolve/plugins/publish/collect_plates.py @@ -1,4 +1,6 @@ -import pyblish +import pyblish.api + +from ayon_resolve.otio import utils class CollectPlate(pyblish.api.InstancePlugin): @@ -16,6 +18,15 @@ def process(self, instance): """ instance.data["families"].append("clip") + otio_timeline = instance.context.data["otioTimeline"] + otio_clip, marker = utils.get_marker_from_clip_index( + otio_timeline, instance.data["clip_index"] + ) + if not otio_clip: + raise RuntimeError("Could not retrieve otioClip for shot %r", instance) + + instance.data["otioClip"] = otio_clip + # Retrieve instance data from parent instance shot instance. parent_instance_id = instance.data["parent_instance_id"] edit_shared_data = instance.context.data["editorialSharedData"]