will this handy AE subtitles script for Mac work on PC?
Hi,
Here is as after effects script I've used on the Mac for a while now (credits within the header info), it generates subtitles at layer markers using a text file. It's great for burning in your subs and you don't have to enter timecode, just hit * where you want the next line to appear/disappear. I hope you find it useful. My hidden agenda for posting however is whether any javascript wizards out there can spot how to make it work on a pc (I have been searching for the original script for some time now). Thanks in advance
{
// Subtitle generator by !Rocky
// modified by Colin Harman ( http://colinharman.com/ ) to work on a Mac
//
// Save this code as
// "subtitles.jsx"
//
// Create a text file with your subtitles.
// Each line of text is one on-screen line.
// To have several lines on-screen at the same time,
// simply separate them with a pipe ( | ) character.
// eg "Character 1 talks|Character 2 interrupts"
//
// Create a new text layer in your comp, adjust its position,
// make sure the text's centered, so it looks nice
// Add markers (Numpad *) where each subtitle line must be shown/hidden.
// With the text layer selected, run the script, and select the subtitles file.
// Enjoy!
function makeSubs() {
var layer = app.project.activeItem.selectedLayers[0];
if (layer.property("sourceText") != null) {
var textFile = File.openDialog("Select a text file to open.", "");
if (textFile != null) {
var textLines = new Array();
textFile.open("r", "TEXT", "????");
while (!textFile.eof)
textLines[textLines.length] = textFile.readln();
textFile.close();
var sourceText = layer.property("sourceText");
var markers = layer.property("marker");
for (var i = sourceText.numKeys; i >= 1; i--)
sourceText.removeKey(i);
var line = 0;
var subTime, subText;
for (var i = 1; i <= markers.numKeys; i++) {
subTime = markers.keyTime(i);
sourceText.setValueAtTime(0, " ");
if ((i % 2) == 0) {
subText = " ";
}
else {
subText = textLines[line].replace("|", "\x0d\x0a");
line++;
}
sourceText.setValueAtTime(subTime, new TextDocument(subText));
}
}
}
}
makeSubs();
}