写了一个hiero检查任务渲染结果的脚本
基本思路是写了一个时间判断函数(postSequence_check)来对比transcode任务提交时间和目标文件夹内文件的修改时间来确定渲染是否成功执行,然后通过Hiero提供的postSequence钩子函数将时间判断函数(postSequence_check)注入进Hiero。
import sys
import os,datetime
import time
#GLOBAL_NAMELIST=[]
def updateItem_new (self, originalItem, localtime):
#print sys._getframe().f_code.co_name
global GLOBAL_LOCALTIME,GLOBAL_CLASS_TYPE
GLOBAL_LOCALTIME = time.mktime(localtime)
GLOBAL_CLASS_TYPE = self
"""updateItem - This is called by the processor prior to taskStart, crucially on the main thread.\n
This gives the task an opportunity to modify the original item on the main thread, rather than the clone."""
#if isinstance(self._item, (Sequence,TrackItem)):
#if isinstance(self._item, Clip):
timestamp = self.timeStampString(localtime)
tag = hiero.core.Tag("Transcode " + timestamp, "icons:Nuke.png")
tag.metadata().setValue("tag.path", self.resolvedExportPath())
tag.metadata().setValue("tag.localtime", str(localtime))
# Right now dont add the time to the metadata
# We would rather store the integer time than the stringified time stamp
#tag.setValue("time", timestamp)
# No point in adding script path if we're not planning on keeping the script
if self._preset.properties()["keepNukeScript"]:
tag.metadata().setValue("tag.script", self._scriptfile)
start, end = self.outputRange()
tag.metadata().setValue("tag.startframe", str(start))
tag.metadata().setValue("tag.duration", str(end-start+1))
frameoffset = self._startFrame if self._startFrame else 0
if hiero.core.isVideoFileExtension(os.path.splitext(self.resolvedExportPath())[1].lower()):
frameoffset = 0
tag.metadata().setValue("tag.frameoffset", str(frameoffset))
if self._cutHandles:
tag.metadata().setValue("tag.handles", str(self._cutHandles))
self._tag_guid = tag.guid()
originalItem.addTag(tag)
# The guid of the tag attached to the trackItem is different from the tag instace we created
# Get the last tag in the list and store its guid
self._tag_guid = originalItem.tags()[-1].guid()
hiero.exporters.FnTranscodeExporter.TranscodeExporter.updateItem = updateItem_new
######################################################################################################
######################################################################################################
######################################################################################################
def postSequence_check(self):
#print sys._getframe().f_code.co_name
#print self.__class__
#print self._filebase
if isinstance(self,hiero.exporters.FnTranscodeExporter.TranscodeExporter):
#print "yeah!"
#print self._root
#print self._shotPath
#print self._filebase
#print self._version
#print self._track
#print self.outputRange()
#print self.properties()
#print initDictionary
#GLOBAL_NAMELIST.append(self._filebase)
base_dir = self._root
base_dir = "/".join(base_dir.split('/')[0:-1])
print self._filebase
list = []
timestamplist = []
list = os.listdir(base_dir)
if len(list) > 0:
for i in range(0, len(list)):
path = os.path.join(base_dir,list[i])
if os.path.isfile(path):
path = os.path.join(base_dir, list[i])
if os.path.isdir(path):
continue
timestamp = os.path.getmtime(path)
timestamplist.append(timestamp)
#print GLOBAL_LOCALTIME,min(timestamplist)
if GLOBAL_LOCALTIME > min(timestamplist):
print "(VHQ) This transcode task has some problem:" + self._filebase
else:
print '(VHQ) This transcode task is OK!'
else:
print "(VHQ) This transcode task has some problem:" + self._filebase
else:
base_dir = self._filebase
#base_dir = "/".join(base_dir.split('/')[0:-1])
print base_dir
print str(self.__class__).strip('<').strip('>').strip("'").split('.')[-1] + ' is not transcode render task!'
hiero.core.FnExporterBase.TaskBase.postSequence = postSequence_check
写了一个hiero检查任务渲染结果的脚本的更多相关文章
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- 写了一个hiero中添加自定义Token的脚本
Hiero自带Token往往不够用,shotname中自带版本号的情况下要升级版本会很麻烦,比如Shot_0001_v001这样一个序列名,要升级为Shot_0001_v002就必须把_v001之前的 ...
- 随手写的一个检测php连接mysql的小脚本
最近偶然接触到一点点的php开发,要用到mysql数据库,由于mysql和php版本的关系,php5里面连接函数有mysql_connect(),mysqli_connect()两种,php7中又使用 ...
- python 拼写检查代码(怎样写一个拼写检查器)
原文:http://norvig.com/spell-correct.html 翻译:http://blog.youxu.info/spell-correct.html 怎样写一个拼写检查器 Pete ...
- 如何写一个拼写检查器-by Peter Norvig
本文原著:Peter Norvig 中文翻译:徐宥 上个星期, 我的两个朋友 Dean 和 Bill 分别告诉我说他们对 Google 的快速高质量的拼写检查工具感到惊奇. 比如说在搜索的时候键入 ...
- 闲来无事,用Java的软引用写了一个山寨的缓存
闲来无事,用Java的软引用写了一个山寨的缓存 博客分类: java基础 众所周知java中的引用分为 StrongReference.SoftReference.WeakReference.Phan ...
- Pluto - iOS 上一个高性能的排版渲染引擎
WeTest 导读 Pluto 是 iOS 上的一个排版渲染引擎,通过 JSON/JS 文件可以很方便地描述界面元素,开发效率很高,并且在流畅度,内存等方便有保证.pluto.oa.com 上有更多详 ...
- 自己写的一个Vue
下面这里是我自己写的一个小型的vue,原理就是proxy: //Proxy天生没有prototype,因此要加上,不然extends会报错 Proxy.prototype = Proxy.protot ...
- 自己写的一个Solr搜索实例,增删改查+高亮+分页
今天个人coding的模块测试,所以闲暇之余继续研究solr,然后顺带写了一个实例,随便搞的,solr真心不熟,期待认识热爱搜索的朋友,共同进步. 1.配置schema.xml文件[solr\coll ...
随机推荐
- Linux 下各个目录的作用及内容
在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对文件目录进行了标准化,于1994年对 ...
- 解决vi编辑器不能使用方向键和退格键
1.使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母 这个问题主要是新系统直装了vi,没有装vim.因为vi是不能直接按退格键删除字符的,所以当你使用退格键删除字符,只有在按下esc时, ...
- 终极C语言指针
// ex1.cpp : Defines the entry point for the console application. // #include "stdafx.h" # ...
- web(二)html
html编写规范 在输入开始标签时同时输入结束标签,以防丢失标签 保证缩紧格式(一个tab键) 主动添加注释(快捷键 选中后 Ctrl+Shift+/) Html的调试 开发者工具(快捷键F12)是前 ...
- 数据库和redis的一致性
之前的讲解,主要是在讲解redis如何支撑海量数据.高并发读写.高可用服务的架构 从这一讲开始,正式开始做业务系统的开发 商品详情页,缓存架构,90%是大量的业务(没有什么级数含量),10%最有级数含 ...
- HttpClient(4.5.x)正确的使用姿势
前言: httpclient(4.5.x)默认是启动连接池的, 其降低时耗(避免连接初3次握手, 以及关闭4次握手的消耗), 显著提升高并发处理能力(大量减少time_wait), 确实扮演了重要的角 ...
- 复杂的动态布尔表达式性能评估(2)--Groovy实现
前言: 规则引擎中, 往往涉及到多个条件构成了复杂布尔表达式的计算. 对于这类布尔表达式, 一是动态可变的(取决于运营人员的设定), 二是其表达式往往很复杂. 如何快速的计算其表达式的值, 该系列文章 ...
- 后台管理Models
1.后台的配置 登录地址 :http://localhost:8000/admin 创建后台管理员(超级用户): 在终端输入:./manage.py createsuperuser Username ...
- Unity查找物体的子物体、孙物体
Unity查找物体下的所有物体 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- event.currentTarget和event.target的区别
currentTarget始终是监听事件者,而target是事件的真正发出者.