使用CSV检查未注册的Cue

创建使用CSV的Cue Sheet 教程介绍了从CSV信息注册波形并创建Cue Sheet和Cue的方法。
本教程中将使用在 创建使用CSV的Cue Sheet 教程中使用的CSV文件, 创建脚本来检查在CRI Atom Craft上创建的Cue Sheet中是否包含与CSV文件中编写的Cue名相一致的Cue。

本教程使用了 创建使用CSV的Cue Sheet 教程中执行的项目。
没有打开项目时,请打开项目,或执行 创建使用CSV的Cue Sheet 所创建的脚本后开始此教程。

脚本文件的准备

选择脚本菜单上的“脚本列表...”显示脚本列表窗口。
按脚本列表窗口的“新建”按钮,使用以下名称创建脚本文件。

脚本的保存目标脚本文件名
tutorials [CRI] tutorial07-2_check_cuesheet_from_csv.py

脚本说明

双击已创建的脚本,用 从脚本编辑器运行脚本 打开。
要通过脚本列表窗口确认脚本概要,按照以下脚本说明来编写。

# --Description:[教程]使用CSV检查未注册的Cue

模块的导入

编写脚本说明后,导入以下模块来用脚本操作CRI Atom Craft。

import sys
import os
import csv
import cri.atomcraft.debug as acdebug
import cri.atomcraft.project as acproject

创建使用CSV的Cue Sheet 教程相同,为了使用CSV文件,需要导入Python的标准程序库的csv模块。
导入 Project模块 以进行项目操作,同时导入 debug模块 以输出日志。

CSV文件路径的设置

设置用于检查的CSV文件的路径变量。
要设置CSV文件的路径变量时,可以如下编写脚本。

# 检查的CSV文件路径
csv_path = os.path.dirname(os.path.dirname(__file__)) + '/tutorial_data/tutorial_data03/tutorial_data3.csv'
# 检查CSV文件是否存在
if os.path.isfile(csv_path) == False:
acdebug.warning("找不到CSV文件: " + csv_path)
sys.exit()

文件不存在时,可以通过 os.path.isfile 函数中断脚本,以检查文件是否存在。

检查的Cue列表和Cue名的枚举

使用以下函数读取CSV文件,获取用于检查的信息。

函数名 说明
get_workunit 获取工作单元
get_cuesheet_rootfolder 获取工作单元的Cue Sheet根文件夹
get_child_object 指定父对象后获取子对象
find_objects 执行递归搜索并以列表格式获取匹配的对象
get_value 获取已指定对象的参数

获取Cue Sheet中注册的Cue列表并获取Cue名信息,以检查是否有相一致的Cue名。
写入脚本时如下。

# ----- 枚举注册的Cue名 -----
registered_cue_name_list = []
# 获取工作单元
workunit = acproject.get_workunit("WorkUnit_Tutorial")["data"]
# Cue Sheet根文件夹
cuesheet_rootfolder = acproject.get_cuesheet_rootfolder(workunit)["data"]
# 从不包括扩展名的CSV文件名中获取Cue Sheet名并获取Cue Sheet
cuesheet_name = os.path.splitext(os.path.basename(csv_path))[0]
cuesheet = acproject.get_child_object(cuesheet_rootfolder, "CueSheet", cuesheet_name)["data"]
# 获取Cue Sheet中注册的Cue列表
cues = acproject.find_objects(cuesheet, "Cue")["data"]
# ----- 创建注册的Cue名列表 -----
acdebug.log("从 tutorial_data3.csv 收集Cue信息...")
for cue in cues:
# 获取Cue名
cue_name = acproject.get_value(cue, "Name")["data"]
# 将Cue名添加至注册的Cue名列表中
registered_cue_name_list.append(cue_name)

比较Cue Sheet内的Cue名和CSV的Cue名

从CSV获取用于检查的“Cue名”信息。
确认在“检查的Cue列表和Cue名的枚举”中创建的Cue名列表中是否包括从CSV获取的Cue名信息。
如果有Cue Sheet中未创建的Cue,脚本日志中将会显示Cue名。

写入脚本时如下。

# 打开CSV,检查Cue Sheet的Cue
acdebug.log("使用 tutorial_data3.csv ,检查Cue...")
unregistered_cue_name_list = []
with open(csv_path) as f:
reader = csv.reader(f)
for row in reader:
# 获取CSV的Cue名的列
cue_name = row[1]
# 检查CSV中记载的Cue是否已完成注册
if not cue_name in registered_cue_name_list:
# 未注册
unregistered_cue_name_list.append(cue_name)
# 检查
if len(unregistered_cue_name_list) > 0:
acdebug.warning(cuesheet_name + "有未注册的Cue")
for cue_name in unregistered_cue_name_list:
acdebug.warning("Cue " + cue_name + "找不到。")
else:
acdebug.log("与检查表没有区别。")
acdebug.log("[教程]使用CSV检查未注册的Cue完成。")

脚本的保存和执行

本教程的脚本编写到此为止。
请保存并执行脚本。
正常运行脚本后,如找到了CSV信息中没有的Cue名时,则日志中将会输出不存在的Cue名列表。
直接操作CRI Atom Craft,执行Cue的添加、删除或Cue名称更改等操作后,不匹配的Cue的日志内容会发生变化。