Skip to content

Instantly share code, notes, and snippets.

View justintaylor-dev's full-sized avatar
🚀

Justin Taylor justintaylor-dev

🚀
View GitHub Profile
@justintaylor-dev
justintaylor-dev / get-and-set-metadata-in-ae.jsx
Created January 13, 2023 21:39
Get and Set Metadata in AE #code_aeft
function setAeMetadata(propName, propValue) {
if (ExternalObject.AdobeXMPScript === undefined) {
ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
}
if (!app.project || !ExternalObject.AdobeXMPScript || !XMPMeta) return;
var prefix = "xmp:";
var uri = XMPMeta.getNamespaceURI(prefix);
var newPropName = prefix + propName;
var metadata = new XMPMeta(app.project.xmpPacket);
metadata.setProperty(uri, newPropName, propValue.toString());
@justintaylor-dev
justintaylor-dev / letters-to-layers.jsx
Created October 13, 2022 21:33
Letters to Layers #code_aeft
function rename(word) {
var array = app.project.activeItem.selectedLayers;
for (var i = 0; i < array.length; i++) {
var layer = array[i];
if(word[i]){
layer.name = word[i];
}
}
}
@justintaylor-dev
justintaylor-dev / extendscript-to-cep-event.js
Created April 12, 2022 18:13
extendscript-to-cep-event
// JS / CEP Extension
const csInterface = new CSInterface();
csInterface.addEventListener('myEvent', (evt) => {
// do stuff
});
// ExtendScript
var xLib = new ExternalObject("lib:\PlugPlugExternalObject");
@justintaylor-dev
justintaylor-dev / ignore-parent-scale.jsx
Created March 31, 2022 15:08
ignore-parent-scale #code_aeft
L = thisLayer;
s = transform.scale.value;
while (L.hasParent){
L = L.parent;
for (i = 0; i < s.length; i++) s[i] *= 100/L.transform.scale.value[i]
}
s
@justintaylor-dev
justintaylor-dev / aegp_execute_script_example.cpp
Created January 6, 2022 17:51
AEGP_ExecuteScript Example
// Example on how to execute an ExtendScript script inside of an After Effects C++ Plugin
AEGP_SuiteHandler suites(in_data->pica_basicP);
A_Boolean outAvailablePB;
AEGP_MemHandle outResultPH;
AEGP_MemHandle outErrorStringPH;
ERR(suites.UtilitySuite4()->AEGP_IsScriptingAvailable(&outAvailablePB));
ERR(suites.UtilitySuite4()->AEGP_ExecuteScript(NULL, "alert(123);", true, &outResultPH, &outErrorStringPH));
@justintaylor-dev
justintaylor-dev / reveal-in-composition.jsx
Created November 4, 2021 17:07
Reveal in Composition #code_aeft
// Reveal in Composition for the first item selected in the project panel
var item = app.project.selection[0];
if(item){
var comp = item.usedIn[0];
if(comp){
comp.openInViewer();
for (var i = 0; i < comp.layers.length; i++) {
var layer = comp.layers[i+1];
layer.selected = layer instanceof AVLayer && layer.source.id === item.id;
@justintaylor-dev
justintaylor-dev / reduce-keyframes.jsx
Created July 17, 2021 01:48
reduce-keyframes #code_aeft
// Loop through all keyframes of selected properties and delete duplicates that don't impact animation
if(!app.project.activeItem instanceof CompItem){
alert('Please Select a Comp');
}
else if(!app.project.activeItem.selectedProperties[0]){
alert('Please Select at least one Property with Keyframes');
}else{
var comp = app.project.activeItem;
var keyedProps = app.project.activeItem.selectedProperties;
@justintaylor-dev
justintaylor-dev / get-name-of-active-layer-below.jsx
Created June 24, 2021 21:44
Get Name of Active Layer Below #code_aeft
const startIndex = thisLayer.index + 1;
const endIndex = thisComp.numLayers;
let activeLayer;
for(i=startIndex;i<endIndex+1;i++){
const l = thisComp.layer(i);
if(l.inPoint <= time && l.outPoint > time){
activeLayer = l;
break;
}
}
@justintaylor-dev
justintaylor-dev / get-frame-of-active-precomp-layer.jsx
Last active November 4, 2021 19:34
Get Frame of Active Precomp Layer #code_aeft
const startIndex = thisLayer.index + 1;
const endIndex = thisComp.numLayers;
let activeLayer;
for(i=startIndex;i<endIndex+1;i++){
const l = thisComp.layer(i);
if(l.inPoint <= time && l.outPoint > time && l.source instanceof Comp){
activeLayer = l;
break;
}
}
@justintaylor-dev
justintaylor-dev / footage-to-red-gamma4.jsx
Created June 11, 2021 04:48
footage-to-red-gamma4 #code_ppro
for (var selection, viewIDs = app.getProjectViewIDs(), i = 0; i < viewIDs.length; i++)
if (app.getProjectFromViewID(viewIDs[i]).name == app.project.name) {
selection = app.getProjectViewSelection(viewIDs[i]);
break
}
for (i = 0; i < selection.length;i++){
var item = selection[i];
var effect = item.videoComponents()[0];
effect.properties[25].setValue(0); // set to REDgamma4