Skip to content

collect_editorial_package

Produces instance.data["editorial_pkg"] data used during integration.

Requires

instance.data["creator_attributes"]["path"] - from creator

Provides

instance -> editorial_pkg (dict): folder_path (str) otio_path (str) - from dragged folder resource_paths (list)

CollectEditorialPackage

Bases: InstancePlugin

Collects path to OTIO file and resources

Source code in client/ayon_traypublisher/plugins/publish/collect_editorial_package.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class CollectEditorialPackage(pyblish.api.InstancePlugin):
    """Collects path to OTIO file and resources"""

    label = "Collect Editorial Package"
    order = pyblish.api.CollectorOrder - 0.1

    hosts = ["traypublisher"]
    families = ["editorial_pkg"]

    def process(self, instance):
        folder_path = instance.data["creator_attributes"]["folder_path"]
        if not folder_path or not os.path.exists(folder_path):
            self.log.info((
                "Instance doesn't contain collected existing folder path."
            ))
            return

        instance.data["editorial_pkg"] = {}
        instance.data["editorial_pkg"]["folder_path"] = folder_path

        otio_path, resource_paths = (
            self._get_otio_and_resource_paths(folder_path))

        instance.data["editorial_pkg"]["otio_path"] = otio_path
        instance.data["editorial_pkg"]["resource_paths"] = resource_paths

    def _get_otio_and_resource_paths(self, folder_path):
        otio_path = None
        resource_paths = []

        file_names = os.listdir(folder_path)
        for filename in file_names:
            _, ext = os.path.splitext(filename)
            file_path = os.path.join(folder_path, filename)
            if ext == ".otio":
                otio_path = file_path
            elif ext in VIDEO_EXTENSIONS:
                resource_paths.append(file_path)
        return otio_path, resource_paths