Hiero Python: 检查素材箱(Bin)中的素材项是否在时间线上
#!/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 方法,用于检查素材箱中的素材项是否在时间线上。
使用方法:
- 将代码保存为Python文件(例如
check_bin_items.py)。 - 在 Hiero 的脚本编辑器中运行该脚本。
代码说明:
get_timeline_all_track_name()方法获取当前时间线上的所有轨道名称。get_project_all_bin_item()方法获取项目中的所有素材箱项。check_bin_items_on_timeline()方法遍历所有素材箱项,并使用clip()方法获取每个素材项关联的剪辑。- 如果剪辑存在且其名称不在时间线轨道名称列表中,则将该素材项添加到
bin_items_not_on_timeline列表中。 - 最后,脚本打印出不在时间线上的所有素材项。
这段代码可以帮助您快速找到未被使用的素材,提高工作效率。
原文地址: https://www.cveoy.top/t/topic/kGV 著作权归作者所有。请勿转载和采集!