You can create some custom Python hook files to do some custom scripting.
In order to find the hook files the file name must match exactly. Please see list below.
Script | Description |
---|---|
| Gets executed before each transcoding task |
| Gets executed after each transcoding task |
The software follows this order looking for Python Hook files.
directory defined in the
DASELEMENT_RESOURCE
environment variableyour local
.das-element
folder (for Linux:~/.das-element/scripts/hooks
or for Windows%homepath%/.das-element/scripts/hooks
)
Pre Render Hook
The input is the resolver data dictionary
which will be used to resolve the path pattern. You can modify it here before the transcoding task gets processed.
You will need to return the same dictionary with your changes included.
In the example below, in order to resolve a path pattern like <custom.dependecy>
you need to add some value for the custom data. If that is not provided the resolve would otherwise fail if you re-render the proxies and there is no main task to provide the dependency which we normally would get from the post render hook after sending the task to the render farm.
# Example file if you use some custom dependency in your submission scripts. # To resolve a path pattern like <custom.dependecy> you need to add some value for the custom data. # If that is not provided the resolve would otherwise fail if you re-render the proxies and there is no main task to provide the depdency. import sys def main(*args): data = args[0] # make sure to set some value for the dependency. # otherwise it will failed when resolving the path pattern '<custom.dependency>' if not data['template_values'].get('custom'): data['template_values']['custom'] = {'dependency': ''} return data if __name__ == '__main__': main(sys.argv[1:])
Post Render Hook
The input is the output of the process called by the custom command task.
You will have to return a Dictionary which will be added as custom
to the resolver data and can later be accessed in the Path Builder. return {'dependency': job_id}
can later be resolved with <custom.dependency>
# Example Python script for post render hook (post_render.py): import sys import re def main(*args): # args[0] is the output from the process calling the 'exec' and 'params' job_output = args[0] job_id = '' if job_output: match = re.search(r'JobID=([a-zA-Z0-9]*)', job_output) if match: job_id = match.group(1) print('Job ID: {}'.format(job_id)) # returns data that can later be access as "custom" # in this example: <custom.dependency> return {'dependency': job_id} if __name__ == '__main__': main(sys.argv[1:])