Aktive Konfiguration: PROD · Helmut4 PROD · helmut4_backup_l-helmut1.adin.mdr.de_2026-10-18 10_57_41 202 Streams
Öffnen
PROD IO Node-Detail

Job Execute ExtendScript In Premiere Action V2

helmut4_backup_l-helmut1.adin.mdr.de_2026-10-18 10_57_41 · ESP - Export zum CMS-ZRS-EVS

Node-Informationen

Stream
ESP - Export zum CMS-ZRS-EVS
Klasse
nodes.actions.helmut.job.JobPremiereExecuteExtendScriptActionV2
UUID
e72fa7f4-b29a-4c82-afde-181a2896f5e5
Operator-ID
22
Event
EXPORT

Properties

{
  "extendScript": "function getSequenceByName(name) {\n    var allSeqs = app.project.sequences;\n    for (var i = 0; i < allSeqs.numSequences; i++) {\n        var seq = allSeqs[i];       \n        if (seq.name === name) {\n            return seq;\n        }\n    }\n    return null;\n}\n\nfunction generateUUID() {\n    var chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');\n    for (var i = 0; i < chars.length; i++) {\n        switch(chars[i]) {\n            case 'x':\n                chars[i] = (Math.random() * 16 | 0).toString(16);\n                break;\n            case 'y':\n                chars[i] = ((Math.random() * 4 | 0) + 8).toString(16);\n                break;\n        }\n    }\n    return chars.join('');\n}\n\nfunction ggt(a, b) {\n    while (b !== 0) {\n      var rest = a [<]%[>] b;\n      a = b;\n      b = rest;\n    }\n    return a;\n}\n\nfunction getAspectRatio(width, height){\n  var teiler = ggt(width, height);\n  var breiteNeu = width / teiler;\n  var hoeheNeu = height / teiler;\n  return breiteNeu + ':' + hoeheNeu;\n}\n\n\nfunction getFrameRate(id){\n\n\tswitch (id) {\n\t\tcase 100:\n\t\t\treturn 24;\n\t\tcase 101:\n\t\t\treturn 25;\n\t\tcase 102:\n\t\t\treturn 29.97;\n\t\tcase 104:\n\t\t\treturn 30;\n\t\tcase 105:\n\t\t\treturn 50;\n\t\tcase 106:\n\t\t\treturn 59.97;\n\t\tcase 107:\n\t\t\treturn 59.97;\n\t\tcase 108:\n\t\t\treturn 60;\n\t\tdefault:\n\t\t\treturn 25;\n\t}\n}\n\nfunction getSequenceMetadata(msequence){\n\t\tvar mdata = {};\n\t\tvar seqsettings = msequence.getSettings();\n\t\tmdata.audiochannels = seqsettings.audioChannelCount;\n\t\tmdata.width = seqsettings.videoFrameWidth;\n\t\tmdata.height = seqsettings.videoFrameHeight;\n\t\tmdata.aspect = getAspectRatio(mdata.width,mdata.height);\n\t\tmdata.framerate = getFrameRate(seqsettings.videoDisplayFormat);\n\treturn mdata;\t\t\n}\n\nvar seqName = \"{stream.variable.Sequenzname}\";\nvar seqfound = false;\nvar metadata = false;\nvar jmetadata = '';\nvar seqObj = null;\nvar sl_name = '';\nvar sl_success = false;\n\nif (app.project.activeSequence){\n    \tvar aSeq = app.project.activeSequence;\n\tif (aSeq.name === seqName){\n\t\tmetadata = getSequenceMetadata(aSeq);\n\t\tseqfound = true;\n\t\tseqObj = aSeq;\n\t}\n}\n\nif (seqfound === false){\n\tvar sequence = getSequenceByName(seqName);\n\tif (sequence) {\n\t    metadata = getSequenceMetadata(sequence);\n\t\tseqfound = true;\n\t\tseqObj = sequence;\n\t}\n}\n\nif (seqfound === true){\nvar fullPath = app.project.path;\nif (fullPath) {\n    var projectFile = new File(fullPath);\n    var projectFolder = projectFile.parent;\n\tvar uuid = generateUUID();\n\tvar outputPath = projectFolder.fsName + \"/Cutlists/\" + uuid + \".xml\";\n\tvar success = seqObj.exportAsFinalCutProXML(outputPath, true);\n\t        if (success) {\n\t\t\t\tvar sl_name = uuid + \".xml\";\n\t\t\t\tvar sl_success = true;\n\t\t\t}\n\t}\n}\n\n\nif (seqfound === false){\n jmetadata = '{\"seqname\":\"'+seqName+'\", \"seqfound\":'+seqfound+'}';\n} else {\n jmetadata = '{\"audiochannels\":'+ metadata.audiochannels+', \"width\":'+metadata.width+', \"height\":'+metadata.height+', \"framerate\":'+metadata.framerate+', \"aspect\":\"'+metadata.aspect+'\", \"seqname\":\"'+seqName+'\", \"seqfound\":'+seqfound+', \"cutlist\":\"'+sl_name+'\",\"cutlist_status\":'+sl_success+'}';\n}\n\njmetadata",
  "nodeUUID": "e72fa7f4-b29a-4c82-afde-181a2896f5e5",
  "successNodeUUID": "cb42c9f0-861f-423f-88a3-251b990238aa"
}

Skript

Original: 127 Zeilen · 3058 Zeichen Formatiert: 125 Zeilen
Formatierung ergänzt Einrückungen und Zeilenumbrüche. Ursprüngliche Variablennamen und Kommentare lassen sich aus minifiziertem Code nicht wiederherstellen. ExtendScript-Direktiven und E4X werden bei der Formatierung berücksichtigt.
Original
function getSequenceByName(name) {
    var allSeqs = app.project.sequences;
    for (var i = 0; i < allSeqs.numSequences; i++) {
        var seq = allSeqs[i];       
        if (seq.name === name) {
            return seq;
        }
    }
    return null;
}

function generateUUID() {
    var chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');
    for (var i = 0; i < chars.length; i++) {
        switch(chars[i]) {
            case 'x':
                chars[i] = (Math.random() * 16 | 0).toString(16);
                break;
            case 'y':
                chars[i] = ((Math.random() * 4 | 0) + 8).toString(16);
                break;
        }
    }
    return chars.join('');
}

function ggt(a, b) {
    while (b !== 0) {
      var rest = a [<]%[>] b;
      a = b;
      b = rest;
    }
    return a;
}

function getAspectRatio(width, height){
  var teiler = ggt(width, height);
  var breiteNeu = width / teiler;
  var hoeheNeu = height / teiler;
  return breiteNeu + ':' + hoeheNeu;
}


function getFrameRate(id){

	switch (id) {
		case 100:
			return 24;
		case 101:
			return 25;
		case 102:
			return 29.97;
		case 104:
			return 30;
		case 105:
			return 50;
		case 106:
			return 59.97;
		case 107:
			return 59.97;
		case 108:
			return 60;
		default:
			return 25;
	}
}

function getSequenceMetadata(msequence){
		var mdata = {};
		var seqsettings = msequence.getSettings();
		mdata.audiochannels = seqsettings.audioChannelCount;
		mdata.width = seqsettings.videoFrameWidth;
		mdata.height = seqsettings.videoFrameHeight;
		mdata.aspect = getAspectRatio(mdata.width,mdata.height);
		mdata.framerate = getFrameRate(seqsettings.videoDisplayFormat);
	return mdata;		
}

var seqName = "{stream.variable.Sequenzname}";
var seqfound = false;
var metadata = false;
var jmetadata = '';
var seqObj = null;
var sl_name = '';
var sl_success = false;

if (app.project.activeSequence){
    	var aSeq = app.project.activeSequence;
	if (aSeq.name === seqName){
		metadata = getSequenceMetadata(aSeq);
		seqfound = true;
		seqObj = aSeq;
	}
}

if (seqfound === false){
	var sequence = getSequenceByName(seqName);
	if (sequence) {
	    metadata = getSequenceMetadata(sequence);
		seqfound = true;
		seqObj = sequence;
	}
}

if (seqfound === true){
var fullPath = app.project.path;
if (fullPath) {
    var projectFile = new File(fullPath);
    var projectFolder = projectFile.parent;
	var uuid = generateUUID();
	var outputPath = projectFolder.fsName + "/Cutlists/" + uuid + ".xml";
	var success = seqObj.exportAsFinalCutProXML(outputPath, true);
	        if (success) {
				var sl_name = uuid + ".xml";
				var sl_success = true;
			}
	}
}


if (seqfound === false){
 jmetadata = '{"seqname":"'+seqName+'", "seqfound":'+seqfound+'}';
} else {
 jmetadata = '{"audiochannels":'+ metadata.audiochannels+', "width":'+metadata.width+', "height":'+metadata.height+', "framerate":'+metadata.framerate+', "aspect":"'+metadata.aspect+'", "seqname":"'+seqName+'", "seqfound":'+seqfound+', "cutlist":"'+sl_name+'","cutlist_status":'+sl_success+'}';
}

jmetadata
Formatiert
function getSequenceByName(name) {
  var allSeqs = app.project.sequences;
  for (var i = 0; i < allSeqs.numSequences; i++) {
    var seq = allSeqs[i];
    if (seq.name === name) {
      return seq;
    }
  }
  return null;
}

function generateUUID() {
  var chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');
  for (var i = 0; i < chars.length; i++) {
    switch (chars[i]) {
      case 'x':
        chars[i] = (Math.random() * 16 | 0).toString(16);
        break;
      case 'y':
        chars[i] = ((Math.random() * 4 | 0) + 8).toString(16);
        break;
    }
  }
  return chars.join('');
}

function ggt(a, b) {
  while (b !== 0) {
    var rest = a[ < ] % [ > ] b;
    a = b;
    b = rest;
  }
  return a;
}

function getAspectRatio(width, height) {
  var teiler = ggt(width, height);
  var breiteNeu = width / teiler;
  var hoeheNeu = height / teiler;
  return breiteNeu + ':' + hoeheNeu;
}

function getFrameRate(id) {

  switch (id) {
    case 100:
      return 24;
    case 101:
      return 25;
    case 102:
      return 29.97;
    case 104:
      return 30;
    case 105:
      return 50;
    case 106:
      return 59.97;
    case 107:
      return 59.97;
    case 108:
      return 60;
    default:
      return 25;
  }
}

function getSequenceMetadata(msequence) {
  var mdata = {};
  var seqsettings = msequence.getSettings();
  mdata.audiochannels = seqsettings.audioChannelCount;
  mdata.width = seqsettings.videoFrameWidth;
  mdata.height = seqsettings.videoFrameHeight;
  mdata.aspect = getAspectRatio(mdata.width, mdata.height);
  mdata.framerate = getFrameRate(seqsettings.videoDisplayFormat);
  return mdata;
}

var seqName = "{stream.variable.Sequenzname}";
var seqfound = false;
var metadata = false;
var jmetadata = '';
var seqObj = null;
var sl_name = '';
var sl_success = false;

if (app.project.activeSequence) {
  var aSeq = app.project.activeSequence;
  if (aSeq.name === seqName) {
    metadata = getSequenceMetadata(aSeq);
    seqfound = true;
    seqObj = aSeq;
  }
}

if (seqfound === false) {
  var sequence = getSequenceByName(seqName);
  if (sequence) {
    metadata = getSequenceMetadata(sequence);
    seqfound = true;
    seqObj = sequence;
  }
}

if (seqfound === true) {
  var fullPath = app.project.path;
  if (fullPath) {
    var projectFile = new File(fullPath);
    var projectFolder = projectFile.parent;
    var uuid = generateUUID();
    var outputPath = projectFolder.fsName + "/Cutlists/" + uuid + ".xml";
    var success = seqObj.exportAsFinalCutProXML(outputPath, true);
    if (success) {
      var sl_name = uuid + ".xml";
      var sl_success = true;
    }
  }
}

if (seqfound === false) {
  jmetadata = '{"seqname":"' + seqName + '", "seqfound":' + seqfound + '}';
} else {
  jmetadata = '{"audiochannels":' + metadata.audiochannels + ', "width":' + metadata.width + ', "height":' + metadata.height + ', "framerate":' + metadata.framerate + ', "aspect":"' + metadata.aspect + '", "seqname":"' + seqName + '", "seqfound":' + seqfound + ', "cutlist":"' + sl_name + '","cutlist_status":' + sl_success + '}';
}

jmetadata

Rohdaten

{
  "class": "nodes.actions.helmut.job.JobPremiereExecuteExtendScriptActionV2",
  "deprecated": false,
  "properties": {
    "extendScript": "function getSequenceByName(name) {\n    var allSeqs = app.project.sequences;\n    for (var i = 0; i < allSeqs.numSequences; i++) {\n        var seq = allSeqs[i];       \n        if (seq.name === name) {\n            return seq;\n        }\n    }\n    return null;\n}\n\nfunction generateUUID() {\n    var chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');\n    for (var i = 0; i < chars.length; i++) {\n        switch(chars[i]) {\n            case 'x':\n                chars[i] = (Math.random() * 16 | 0).toString(16);\n                break;\n            case 'y':\n                chars[i] = ((Math.random() * 4 | 0) + 8).toString(16);\n                break;\n        }\n    }\n    return chars.join('');\n}\n\nfunction ggt(a, b) {\n    while (b !== 0) {\n      var rest = a [<]%[>] b;\n      a = b;\n      b = rest;\n    }\n    return a;\n}\n\nfunction getAspectRatio(width, height){\n  var teiler = ggt(width, height);\n  var breiteNeu = width / teiler;\n  var hoeheNeu = height / teiler;\n  return breiteNeu + ':' + hoeheNeu;\n}\n\n\nfunction getFrameRate(id){\n\n\tswitch (id) {\n\t\tcase 100:\n\t\t\treturn 24;\n\t\tcase 101:\n\t\t\treturn 25;\n\t\tcase 102:\n\t\t\treturn 29.97;\n\t\tcase 104:\n\t\t\treturn 30;\n\t\tcase 105:\n\t\t\treturn 50;\n\t\tcase 106:\n\t\t\treturn 59.97;\n\t\tcase 107:\n\t\t\treturn 59.97;\n\t\tcase 108:\n\t\t\treturn 60;\n\t\tdefault:\n\t\t\treturn 25;\n\t}\n}\n\nfunction getSequenceMetadata(msequence){\n\t\tvar mdata = {};\n\t\tvar seqsettings = msequence.getSettings();\n\t\tmdata.audiochannels = seqsettings.audioChannelCount;\n\t\tmdata.width = seqsettings.videoFrameWidth;\n\t\tmdata.height = seqsettings.videoFrameHeight;\n\t\tmdata.aspect = getAspectRatio(mdata.width,mdata.height);\n\t\tmdata.framerate = getFrameRate(seqsettings.videoDisplayFormat);\n\treturn mdata;\t\t\n}\n\nvar seqName = \"{stream.variable.Sequenzname}\";\nvar seqfound = false;\nvar metadata = false;\nvar jmetadata = '';\nvar seqObj = null;\nvar sl_name = '';\nvar sl_success = false;\n\nif (app.project.activeSequence){\n    \tvar aSeq = app.project.activeSequence;\n\tif (aSeq.name === seqName){\n\t\tmetadata = getSequenceMetadata(aSeq);\n\t\tseqfound = true;\n\t\tseqObj = aSeq;\n\t}\n}\n\nif (seqfound === false){\n\tvar sequence = getSequenceByName(seqName);\n\tif (sequence) {\n\t    metadata = getSequenceMetadata(sequence);\n\t\tseqfound = true;\n\t\tseqObj = sequence;\n\t}\n}\n\nif (seqfound === true){\nvar fullPath = app.project.path;\nif (fullPath) {\n    var projectFile = new File(fullPath);\n    var projectFolder = projectFile.parent;\n\tvar uuid = generateUUID();\n\tvar outputPath = projectFolder.fsName + \"/Cutlists/\" + uuid + \".xml\";\n\tvar success = seqObj.exportAsFinalCutProXML(outputPath, true);\n\t        if (success) {\n\t\t\t\tvar sl_name = uuid + \".xml\";\n\t\t\t\tvar sl_success = true;\n\t\t\t}\n\t}\n}\n\n\nif (seqfound === false){\n jmetadata = '{\"seqname\":\"'+seqName+'\", \"seqfound\":'+seqfound+'}';\n} else {\n jmetadata = '{\"audiochannels\":'+ metadata.audiochannels+', \"width\":'+metadata.width+', \"height\":'+metadata.height+', \"framerate\":'+metadata.framerate+', \"aspect\":\"'+metadata.aspect+'\", \"seqname\":\"'+seqName+'\", \"seqfound\":'+seqfound+', \"cutlist\":\"'+sl_name+'\",\"cutlist_status\":'+sl_success+'}';\n}\n\njmetadata",
    "nodeUUID": "e72fa7f4-b29a-4c82-afde-181a2896f5e5",
    "successNodeUUID": "cb42c9f0-861f-423f-88a3-251b990238aa"
  }
}

Vorgang läuft

0 s · Bitte warten. Der Vorgang wird verarbeitet.

    0 s · Es wird keine neue Snapshot-Analyse gestartet.

    Willkommen im Helmut Analyzer

    Neu hier? Unter Info & Hilfe findest du einen Quickstart für den Export aus Helmut4, den Import deiner Konfiguration und die Auswertung. Dort sind auch unsere Prüfregeln und Best Practices erklärt.

    Info & Hilfe öffnen