• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Adobe Scripting Bulk Replacing .png Footage

New Here ,
Oct 25, 2022 Oct 25, 2022

Copy link to clipboard

Copied

Hello,

I am trying to write a script to Bulk Replace a lot of png files numerous times and then add them to the media Encoder.

The Projects I will be working with will be quite large so I am hesitant to use indexes for anything. However I just don't know how to get the contents of a project folder inside After effects?

A simplified structure looks like this

- comp

- comp

- folder1

- folder2

-- png 1

-- png 2

-- png 3

 

I want to be able to replace all the .png's with other png's on my system. As stated the system part works fine and is ready to go, but how do I specifically target all the .png's in this folder? Usually in programming languages you can just grab all children of something and loop through them but this doesn't seem to be the case.

So how do I get all elements inside a folder in after effects?
And in the next step do I just have to replace the footage and send it to the media encoder?

 

I have programming experience however this is my first time trying adobe scripting. Any help is gladly appreciated.

TOPICS
Scripting

Views

125

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Oct 25, 2022 Oct 25, 2022

First you need to go through the project bin and find the folder, then you can go through the project bin again, looking for footage items in that folder, like this:

 

function getFolder(theName){
	for (var i = 1; i <= app.project.numItems; i++){
		if (app.project.item(i) instanceof FolderItem && app.project.item(i).name == theName){
			return app.project.item(i);
		}
	}
	return null;
}

var myFolder = getFolder("Folder 2");
var myFootage = [];
if (myFolder != null){
	for (var i = 1; i <= app.pr
...

Votes

Translate

Translate
LEGEND ,
Oct 25, 2022 Oct 25, 2022

Copy link to clipboard

Copied

You can check "is instanceOf AVItem" and the source file with ".isFootage" and similar. Once that's done you can simply resolve the file path and name. Refer to the scripting guide for more details:

 

Welcome to the After Effects Scripting Guide! — After Effects Scripting Guide 22.0.0 documentation

 

You may also want to download soem example scripts from AEScripts.com and learn from the code.

 

Mylenium

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 02, 2022 Nov 02, 2022

Copy link to clipboard

Copied

Thanks for the hint! I might have been unclear, but this was not the problem I was tryng to solve. I was unaware that a folder item has items() as well that you can loop through this is what I was looking for.
On a side note: I just checked the doc and and it said "attempting to check if item instanceof AVItem will fail because AVItem is undefined. This is also true for Item itself." So you would have to check if it is a FootageItem instead.

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Oct 25, 2022 Oct 25, 2022

Copy link to clipboard

Copied

First you need to go through the project bin and find the folder, then you can go through the project bin again, looking for footage items in that folder, like this:

 

function getFolder(theName){
	for (var i = 1; i <= app.project.numItems; i++){
		if (app.project.item(i) instanceof FolderItem && app.project.item(i).name == theName){
			return app.project.item(i);
		}
	}
	return null;
}

var myFolder = getFolder("Folder 2");
var myFootage = [];
if (myFolder != null){
	for (var i = 1; i <= app.project.numItems; i++){
		if (app.project.item(i) instanceof FootageItem && app.project.item(i).parentFolder.id == myFolder.id){
			myFootage.push(app.project.item(i));
		}
	}
}

alert (myFootage.length);

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 02, 2022 Nov 02, 2022

Copy link to clipboard

Copied

LATEST

Perfect. thank you!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines