Snippets
Created by
renderTom -
last modified
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | // Convert any file to binary string.
// By Tomas Sinkunas. www.rendertom.com
// Select some files and they will be converted to binary string. The output files will be saved to same location as original files, but will have .txt extension.
(function (thisObj) {
var options = {
oneFile: true,
addRes: true,
};
scriptBuildUI(thisObj);
function scriptBuildUI(thisObj) {
var typeOfWindow = getTypeOfWindow();
var win = (thisObj instanceof Panel) ? thisObj : new Window(typeOfWindow, "Export To Binary", undefined, {
resizeable: true
});
win.alignChildren = ["fill", "fill"];
var checkOneFile = win.add("checkbox", undefined, "Write everything to one file");
checkOneFile.value = options.oneFile;
var checkAddRes = win.add("checkbox", undefined, "Add \"Create File\" option");
checkAddRes.value = options.addRes;
var btnConvert = win.add("button", undefined, "Export To Binary");
btnConvert.onClick = function () {
options.oneFile = checkOneFile.value;
options.addRes = checkAddRes.value;
main();
};
win.onResizing = win.onResize = function () {
this.layout.resize();
};
if (win instanceof Window) {
win.center();
win.show();
} else {
win.layout.layout(true);
win.layout.resize();
}
}
function main() {
try {
var sourceFiles = File.openDialog("Select files to with to export to binary", undefined, {
multiSelect: true
});
if (!sourceFiles) return;
var binaryStringsArray = [],
resourceStringsArray = [],
finalString = "",
binaryString = "",
resourceString = "",
displayName = "",
fileName = "",
extension = "",
variableName = "",
i, il;
if (options.oneFile === true) {
for (i = 0, il = sourceFiles.length; i < il; i++) {
displayName = File(sourceFiles[i]).displayName;
fileName = displayName.split(".")[0];
extension = displayName.split(".")[1];
variableName = toVariableName(fileName);
binaryString = "var " + variableName + "_bin = " + convertToBinary(sourceFiles[i]);
resourceString = "var " + variableName + " = createResourceFile (\"" + fileName + "." + extension + "\", " + variableName + "_bin, userDataFolder);";
binaryStringsArray.push(binaryString);
resourceStringsArray.push(resourceString);
}
finalString = buildString(binaryStringsArray, resourceStringsArray);
saveFile(File.decode(sourceFiles[0].path) + "/ALL.txt", finalString);
} else {
for (i = 0, il = sourceFiles.length; i < il; i++) {
binaryString = convertToBinary(sourceFiles[i]);
saveFile(sourceFiles[i].fsName + ".txt", binaryString);
}
}
alert("Done");
} catch (e) {
alert(e.toString() + "\nLine: " + e.line.toString());
}
}
function buildString(binaryStringsArray, resourceStringsArray) {
var finalString = binaryStringsArray.join("\n");
if (options.addRes === true) {
finalString += "\n\n\nvar userDataFolder = \"~/Desktop/\";\n";
finalString += resourceStringsArray.join("\n") + "\n\n";
finalString += "function createResourceFile(filename, binaryString, resourceFolder) {\n" +
"\tvar fileObject = new File(resourceFolder + \"/\" + filename);\n" +
"\tif (!File(fileObject).exists) {\n" +
"\t\tfileObject.encoding = \"BINARY\";\n" +
"\t\tfileObject.open(\"w\");\n" +
"\t\tfileObject.write(binaryString);\n" +
"\t\tfileObject.close();\n" +
"\t}\n" +
"\treturn fileObject;\n" +
"}\n";
}
return finalString;
}
function toVariableName(string) {
var varName = string;
// remove non A-Z from beginning
varName = varName.replace(/[^A-Za-z]*/, "");
if (varName.length === 0) {
varName = "undef_" + string;
}
// capitalise first letters of the word;
varName = varName.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
// remove white spaces;
varName = varName.replace(/\s+/g, "");
// lowercase first letter;
varName = varName.charAt(0).toLowerCase() + varName.substr(1);
return varName;
}
function convertToBinary(fileObj, appendix) {
var fileContent = readFileContent(fileObj, "BINARY");
var binaryString = fileContent.toSource();
binaryString = binaryString.replace(/^\(new String\(/, "");
binaryString = binaryString.replace(/\)\)$/, ";");
return binaryString;
}
function getTypeOfWindow() {
var isAfterEffects = function () {
return BridgeTalk.appName.toLowerCase().match("aftereffects");
};
return isAfterEffects() ? "palette" : "dialog";
}
function saveFile(filePath, fileContents, encoding) {
var fileObject = new File(filePath);
encoding = encoding || "UTF-8";
fileObject.open("W");
fileObject.encoding = encoding;
fileObject.write(fileContents);
fileObject.close();
}
function readFileContent(fileObj, encoding) {
encoding = encoding || "UTF-8";
fileObj.encoding = encoding;
fileObj.open('r');
var fileContent = fileObj.read();
fileObj.close();
return fileContent;
}
})(this);
|
Comments (0)
You can clone a snippet to your computer for local editing. Learn more.