ADOBE AFTER EFFECTS: Forum Expressions Tutorials Creative Cloud

Importing a .txt file to use as source text, but without lists/arrays/etc formatting.

COW Forums : Adobe After Effects

<< PREVIOUS   •   FAQ   •   VIEW ALL   •   PRINT   •   NEXT >>
James Houston
Importing a .txt file to use as source text, but without lists/arrays/etc formatting.
on Feb 4, 2014 at 1:40:23 am

Hello,
I have hundreds of sequential text files each containing a few sentences.
I'd like to flash the contents of each text file onscreen in sequence.

Is there a way of telling an AE text layer to read & display ALL of the contents in a specific .txt file? All the tutorials/advice I can find on Google state that I'd need to have my original data in an array format first.


thanks.
james


Return to posts index

Declan Smith
Re: Importing a .txt file to use as source text, but without lists/arrays/etc formatting.
on Feb 4, 2014 at 12:35:29 pm
Last Edited By Declan Smith on Feb 4, 2014 at 1:36:19 pm

Not easily, but yes, there is always a way. evalFile will 'evaluate' an external script, that's it, that's all it does. In this, it will of coarse evaluate variables, so as long as your text conforms to these requirements, then it will work.

For example, supposing your text file contained the following:
--------
Here is "my text" and [not] someone else's!!

Oh and here is another line of my fine work
--------

The using $.evalFile('/somepath/somefile') on it's own will (as you have found) not work.

BUT

If your file read like this:
--------
contents=["\
Here is \"my text\" and \[not\] someone else's!!\
\
Oh and here is another line of my fine work\
"]
--------

Then the text expression below would indeed display the contents of the file:

try {
$.evalFile("/Volumes/Media/Projects/AE/keys2.txt");
eval("contents")[0];
} catch (err) {
"Error";
}


So, what you need to do, outside of AE, is pre-process your text files. This can be done very simply with a script (depending on what platform you are on, Mac or Windows). The requirements are as follows (in this order):

1. Replace \ with \\
2. Replace [ with \[
3. Replace ] with \]
4. Replace " with \"
5. Insert a line at the beginning
contents="[
6. Insert \ at the end of every line
7. Append the following line to the end of the file
]"

[EDIT} a simple perl script to do this as follows (I assume entirely that you are on a Mac so you would do all this in a terminal window)

-----
#!/usr/bin/perl

print 'contents=["';

while () {
chomp;
s///g;
s/[/[/g;
s/]/]/g;
s/"/"/g;
print $_ . "n";
}
print '"]'."n";
-----

to use, save the file as "txt2ae.pl" then

cat source.txt | perl -f txt2ae.pl > dest.txt

If you have loads of files, then wrap it in a script. For example, if all your files that you need in AE have the .txt extension:

for file in `ls *.txt | grep -v AESRC_`; do cat ${file} | perl -f makeae.pl > AESRC_${file}; done

This will create converted versions of your files that will have their filename starting with AESRC_

If you go down this route then I would further advise that you rename your files to contain the layer name or comp name, so that you can duplicate the layers easily within AE.

Declan Smith
http://www.madpanic.tv
After Effects CS6/ FCS3 / Canon XLH1 / Canon 7D / Reason / Cubase

"it's either binary or it's not"


Return to posts index

Declan Smith
Re: Importing a .txt file to use as source text, but without lists/arrays/etc formatting.
on Feb 4, 2014 at 5:37:13 pm

Here is a project and all the scripts and example text files that should show how this works.

7096_txt2ae.zip

Declan Smith
http://www.madpanic.tv
After Effects CS6/ FCS3 / Canon XLH1 / Canon 7D / Reason / Cubase

"it's either binary or it's not"


Return to posts index


James Houston
Re: Importing a .txt file to use as source text, but without lists/arrays/etc formatting.
on Feb 4, 2014 at 8:36:06 pm

Wow Declan, this is wonderful. Thank you very much.
James


Return to posts index

<< PREVIOUS   •   VIEW ALL   •   PRINT   •   NEXT >>
© 2017 CreativeCOW.net All Rights Reserved
[TOP]