Source Review

Hedge's Source Review feature allows you to enforce custom offload workflows with predefined metadata requirements and organize settings.

This feature is a paid add-on. Send an email to [email protected] if you want to test this feature.

Source Review

When Source Review is on, adding a Source will trigger a popup where the user can select a source review preset, add metadata, and review the settings.

Logging

The used preset and the added metadata are logged in the Transfer Log and Media Hash List by default.

Transfer Log example:
---------------------
Hedge 20.0β (856) - macOS 10.15.2
Source: /Untitled
Destination: /T2/XYZ.617/London/2020-01-23
Preset: Example
Story ID: XYZ.617
Location: London
Date: 2020-01-23
Card ID: 002
...
-- Transferred files --
#1: Clip0001.MXF
Path: XYZ.617-London-2020-01-23-Card002-Clip0001.MXF
...
Media Hash List example:
------------------------
<?xml version="1.0" encoding="UTF-8"?>
<hashlist version="1.1">
<hedge>
<rootPath>/Users/jeroendejong</rootPath>
<info></info>
</hedge>
<sourceInfo>
<sourceinfofield name="Story ID">XYZ.617</sourceinfofield>
<sourceinfofield name="Location">London</sourceinfofield>
<sourceinfofield name="Date">2020-01-23</sourceinfofield>
<sourceinfofield name="Card ID">002</sourceinfofield>
</sourceInfo>
...
<hash>
<file>XYZ.617-London-2020-01-23-Card001-Clip0001.MXF</file>
<size>13729840</size>
<lastmodificationdate>2019-08-22T11:44:05Z</lastmodificationdate>
<xxhash64be>b09fa6763fbd1cf6</xxhash64be>
<xxhash64>f61cbd3f76a69fb0</xxhash64>
<hashdate>2020-01-23T13:25:33Z</hashdate>
</hash>
...

3rd party Sidecars

The current Hedge release supports the following 3rd party sidecar files:

Sidecar format

Type

Iconik

JSON (per file)

Iconik Sidecar settings

Setting

Type

Required

Description and example

createIconikSidecars

Boolean

no

enables sidecar file creation

iconikSidecarParameterNames

Array

yes

metadata elements that should end up in the sidecar file e.g ["{Story ID}", "{Location}", "{Card ID}"]

Iconik preset example:

"createIconikSidecars": true,
"iconikSidecarParameterNames": ["{Story ID}", "{Location}"]
Iconik sidecar :
---------------
{
"metadata_values" : {
"Story ID" : {
"field_values" : [
{
"value" : "XYZ.617"
}
]
},
"Location" : {
"field_values" : [
{
"value" : "London"
}
]
},
"Card ID" : {
"field_values" : [
{
"value" : "002"
}
]
}
}
}

The preset

All preset files located in ~/Library/Preferences/Hedge/Presets/ are loaded on the fly.

It is possible to create one preset file with multiple presets, or multiple preset files with one preset each. All presets will be available to the user in the Source Review preset dropdown. The preset name must be unique.

Preset files use the JSON format in which multiple presets can be defined. Each preset has its own scope where multiple Source Review Parameters and Organize Settingscan be defined.

Preset example:
---------------
[{
"name": "Example",
"description": "",
"sourceReviewParameters": [
{ "parameterName": "{Story ID}", "defaultValue": "" },
{ "parameterName": "{Location}", "defaultValue": "" },
{ "parameterName": "{Date}", "defaultValue": "{YYYY}-{MM}-{DD}" },
{ "parameterName": "{Card ID}", "defaultValue": 1, "autoIncrement" : true }
],
"ignoreFiles": [".CPI", ".MPL", ".BDM", ".BIN", ".XML", ".IND", ".BNP", ".log", ".HST", ".TMP", ".PDI", ".DAT", ".TDT", "TID", ".JPG", ".INT", "INP"],
"ignoreEmptyFolders": true,
"ignoreBundles": { "name": ["AVCHD"], "smallerThan": "1MB" },
"flattenFolders": true,
"renamePattern": "{Story ID}-{Location}-{Date}-Card{Card ID}-{File Name}",
"folderPattern": "{Story ID}/{Location}/{Date}"
}]

Form elements

Source Review form elements must be declared as sourceReviewParameters. A parameter should have a unique parameterName and should be enclosed in curly brackets.

"sourceReviewParameters": [
{ "parameterName": "{Project ID}", "defaultValue": "{Source Name}" },
{ "parameterName": "{Location}", "defaultValue": "" },
{ "parameterName": "{Date}", "defaultValue": "{YY}.{MM}.{DD}" },
{ "parameterName": "{Card ID}", "defaultValue": 1, "autoIncrement" : true },
{ "parameterName": "{Camera}", "defaultValue": "CAM B", "optionLabels": ["CAM A","CAM B"] },
]

All sourceReviewParameters will be presented to the user in the Source Review popup in the order they appear in the preset and can have the following attributes:

Input

Attribute

Type

Required

Description and example

parameterName

String

yes

The name of the element. E.g “{Location}”.

defaultValue

String

no

The default value. E.g “London” , "1" , ““ or {YY}{MM}{DD}.

value

String

no

Used to store the current (user) value

autoIncrement

Boolean

no/yes

Required when defaultValue is an integer. When true will automatically increase by 1 every time a new Source is set.

Attribute

Type

Required

Description and example

parameterName

String

yes

The name of the element. E.g “{Camera}”.

defaultValue

String

no

The dropdown value that should be selected by default

optionLabels

Array

yes

The options in the dropdown. E.g["CAM A","CAM B"]

Dropdowns also allow empty values. This is handy when you want to allow the user to make an active choice, e.g:

{ "parameterName": "{Camera}", "defaultValue": "", "optionLabels":["", "CAM A","CAM B"]}

Metadata { }

Hedge can use strings enclosed in curly brackets as metadata variables, e.g {Project ID}. The following predefined variables can also be used:

Metadata elements

Description

Value example

{Source Name}

Name or Label of the Source

UNTITLED

{counter}

Source Counter (counts per preset)

001

{YYYY} or {YY}

Current year

2020 or 20

{MM}

Current month

01

{DD}

Current day

16

{hh}

Current hour (24h)

14

{mm}

Current minutes

05

{ss}

Current seconds

22

{File Name}

Name of the file

Clip001

Organize settings

The following settings can be defined in the preset:

Setting

Type

Required

Description and example

doNotCopyFiles

Array

no

Files with these file extensions do not get transferred. [".thumbs", "XML"]

copyOnlyFiles

Array

no

Only files with these file extensions will get transferred. [".thumbs", "XML"]

ignoreEmptyFolders

Boolean

no

When true, empty folders will not get transferred.

ignoreBundles

Array

no

Bundles with these names will be size checked and not transfered when they are bigger or smaller then specified. [ "AVCHD<2MB" ]

flattenFolders

Boolean

no

When true, flattens the folder structure of the source. Duplicate filenames will be renamed with a counter.

renamePattern

String

no

Renames all files with the specified format. {Metadata} elements including {File name} can be used here.

folderPattern

String

no

Create destination folders with a specified format. {Metadata} elements, excluding {File name}, can be used. Use / to create a folder path.

Preset file example

Example: multiple preset files
------------------------------
~/Library/Preferences/Hedge/Presets/example-preset1.json
~/Library/Preferences/Hedge/Presets/example-preset2.json
~/Library/Preferences/Hedge/Presets/example-preset3.json
Example 2: multiple presets in 1 file
-------------------------------------
~/Library/Preferences/Hedge/Presets/example-presets.json
[
{
"name": "preset 1",
...
},
{
"name": "preset 2",
...
},
{
"name": "preset 3",
...
}
]

Roadmap ideas

  • Custom sidecar files via integrations

    • New sourceReviewParametertypes

  • date picker

  • integer stepper (show as 001)

  • Fetch remote JSON data from endpoint

  • Auto complete / suggest

  • Mandatory sourceReviewParameters

  • sourceReviewParametersvalidation rules

  • Preset builder that can export a preset.hedge file

  • Help function

  • Auto select preset based on source name

  • API calls on preset selection

    • set destination

    • set prefs (i.e checkpoint)