ayon-core/openpype/plugins/publish/extract_otio_file.py
Toke Jepsen f7d76617c0
Testing: Validate Maya Logs (#5775)
* Working version

* Improve launched app communication

* Move imports to methods.

* Update tests/integration/hosts/maya/test_publish_in_maya.py

Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>

* Collect errors from process

* fix startup scripts arguments

* Update openpype/lib/applications.py

Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>

* Fix application polling

* Docstring

* Revert stdout and stderr

* Revert subprocess.PIPE

* Added missed imports

If we are moving these because of testing, lets move all of them

---------

Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
Co-authored-by: kalisp <petr.kalis@gmail.com>
2023-11-07 16:51:54 +01:00

47 lines
1.3 KiB
Python

import os
import pyblish.api
from openpype.pipeline import publish
class ExtractOTIOFile(publish.Extractor):
"""
Extractor export OTIO file
"""
label = "Extract OTIO file"
order = pyblish.api.ExtractorOrder - 0.45
families = ["workfile"]
hosts = ["resolve", "hiero", "traypublisher"]
def process(self, instance):
# Not all hosts can import this module.
import opentimelineio as otio
if not instance.context.data.get("otioTimeline"):
return
# create representation data
if "representations" not in instance.data:
instance.data["representations"] = []
name = instance.data["name"]
staging_dir = self.staging_dir(instance)
otio_timeline = instance.context.data["otioTimeline"]
# create otio timeline representation
otio_file_name = name + ".otio"
otio_file_path = os.path.join(staging_dir, otio_file_name)
otio.adapters.write_to_file(otio_timeline, otio_file_path)
representation_otio = {
'name': "otio",
'ext': "otio",
'files': otio_file_name,
"stagingDir": staging_dir,
}
instance.data["representations"].append(representation_otio)
self.log.info("Added OTIO file representation: {}".format(
representation_otio))