Try this updated code: var w = new Window("palette", "Offline Media", undefined);
w.add('statictext', undefined, "Enter media file suffix (e.g., mxf):");
var nameWindow = w.add("edittext");
nameWindow.characters = 30;
var sb = w.add("button", undefined, "Start");
w.show();
sb.onClick = offlineFunction;
function offlineFunction() {
try {
var name = nameWindow.text.toLowerCase();
var count = 0;
var errors = 0;
for (var i = 1; i <= app.project.numItems; i++) {
try {
var footageItem = app.project.items[i];
if (footageItem instanceof FootageItem && footageItem.file) {
var filename = footageItem.file.name;
if (filename) {
var idx = filename.lastIndexOf(".");
if (idx > 0) {
var suffix = filename.slice(idx + 1).toLowerCase();
if (suffix === name) {
count++;
var fr = footageItem.frameRate > 0 ? footageItem.frameRate : 1;
var dur = footageItem.duration > 0 ? footageItem.duration : 1;
footageItem.replaceWithPlaceholder(filename, footageItem.width, footageItem.height, fr, dur);
}
}
}
}
} catch (innerError) {
errors++;
$.writeln("Error processing item " + i + ": " + innerError.toString());
}
// Pause every 10 items to reduce strain on AE
if (i % 10 === 0) {
$.sleep(100); // Sleep for 100 milliseconds
}
}
var msg = "Offlined " + count + " media items. Errors: " + errors;
showMsg(msg);
} catch (e) {
showMsg("Exception! " + e.toString());
}
}
function showMsg(msg) {
var myWindow = new Window("dialog");
var myMessage = myWindow.add("statictext");
myMessage.text = msg;
myWindow.add("button", undefined, "OK").onClick = function () {
myWindow.close();
}
myWindow.show();
}
... View more