#!/usr/bin/env python
# -*- coding: utf-8 -*-
import hiero.core as hcore
import hiero.ui as hui


class MHiero:
    def __init__(self):
        pass

    def get_projects(self):
        myProject = hcore.projects()
        return myProject

    def get_project_all_bin_item(self, project):
        bin_item_list = []
        if not isinstance(project, list):
            for item in project[0].clipsBin().items():
                if isinstance(item, hcore.Bin):
                    self._getBinItem(item, bin_item_list)

            return bin_item_list

    def get_bin_item_name(self, binItems):
        name_list = []
        for binItem in binItems:
            name_list.append(binItem.name())
        return name_list

    @staticmethod
    def get_timeline_all_track_name():
        timeline = hui.activeSequence()
        track_list = []
        for item in timeline.videoTracks():
            all_track_item = item.items()
            track_list.append([i.name() for i in all_track_item])
        return track_list

    def check_bin_items_on_timeline(self):
        timeline_track_names = self.get_timeline_all_track_name()
        project = self.get_projects()
        bin_item_list = self.get_project_all_bin_item(project)

        bin_items_not_on_timeline = []
        for binItem in bin_item_list:
            bin_item_clip = binItem.clip()
            if bin_item_clip and bin_item_clip.name() not in timeline_track_names:
                bin_items_not_on_timeline.append(binItem)

        return bin_items_not_on_timeline


if __name__ == '__main__':
    h = MHiero()
    binItems_not_on_timeline = h.check_bin_items_on_timeline()
    
    if binItems_not_on_timeline:
        print('不在时间线上的 BinItem:')
        for binItem in binItems_not_on_timeline:
            print(binItem)
    else:
        print('所有 BinItem 都在时间线上')

这段代码定义了一个 MHiero 类,其中包含一个 check_bin_items_on_timeline 方法,用于检查素材箱中的素材项是否在时间线上。

使用方法:

  1. 将代码保存为Python文件(例如 check_bin_items.py)。
  2. 在 Hiero 的脚本编辑器中运行该脚本。

代码说明:

  • get_timeline_all_track_name() 方法获取当前时间线上的所有轨道名称。
  • get_project_all_bin_item() 方法获取项目中的所有素材箱项。
  • check_bin_items_on_timeline() 方法遍历所有素材箱项,并使用 clip() 方法获取每个素材项关联的剪辑。
  • 如果剪辑存在且其名称不在时间线轨道名称列表中,则将该素材项添加到 bin_items_not_on_timeline 列表中。
  • 最后,脚本打印出不在时间线上的所有素材项。

这段代码可以帮助您快速找到未被使用的素材,提高工作效率。

Hiero Python: 检查素材箱(Bin)中的素材项是否在时间线上

原文地址: https://www.cveoy.top/t/topic/kGV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录