Skip to content

Instantly share code, notes, and snippets.

@arthuredelstein
Created January 7, 2018 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arthuredelstein/1ea2e495d30db03b17786f0366474828 to your computer and use it in GitHub Desktop.
Save arthuredelstein/1ea2e495d30db03b17786f0366474828 to your computer and use it in GitHub Desktop.
Handy scripts for making screenshots in tor browser. To use, paste in browser console. Then enter `grabImage("image-dir", "imagestem", false);`
let locales = ["ar", "de", /*"en-US",*/ "es-ES", "fa", "fr", "ja", "it",
"ko", "nl", "pl", "pt-BR", /*"ru",*/ "tr", "vi", "zh-CN"];
let listenOnce = (element, event, useCapture) => {
return new Promise(function (resolve, reject) {
let onEvent = function (ev) {
element.removeEventListener(event, onEvent, useCapture);
resolve(ev);
};
element.addEventListener(event, onEvent, useCapture);
});
};
let arrayFromEnumerator = (enumerator) => {
let arr = [];
while (enumerator.hasMoreElements()) {
arr.push(enumerator.getNext());
}
return arr;
};
let directoryContents = (dirPath) =>
arrayFromEnumerator(new FileUtils.File(dirPath).directoryEntries)
.map(x => x.QueryInterface(Ci.nsIFile));
let mostRecentScreenshot = () =>
directoryContents("/Users/arthur/Desktop")
.filter(f => f.leafName.startsWith("Screen Shot"))
.sort((a,b) => a.lastModifiedTime - b.lastModifiedTime)
.slice(-1)[0];
let moveLatestScreenshotToManual = (locale, location, name) => {
let screenShot = mostRecentScreenshot();
let path = `/projects/torproject/user-manual/${locale}/media/${location}/`;
screenShot.renameTo(new FileUtils.File(path), name);
console.log(`Saved image to ${path}`);
};
let userManualDirPath = "/projects/torproject/user-manual/";
let grabImage = async function (locale, mediaSubDir, filename, extra) {
console.log(`Current locale: ${locale}`);
let shortLocale = locale.substring(0,2);
Services.prefs.setCharPref("general.useragent.locale", locale);
let win;
if (extra === "networkSettings") {
win = window.openDialog("chrome://torlauncher/content/network-settings-wizard.xul", "_blank", "chrome,dialog=no,resizable", [true]);
} else {
win = OpenBrowserWindow();
}
await listenOnce(win, "close", false);
moveLatestScreenshotToManual(locale, mediaSubDir, filename);
};
let grabImages = (mediaSubDir, filename, extra) => {
(async function () {
for (let locale of locales) {
await grabImage(locale, mediaSubDir, filename, extra);
}
console.log("Finished.");
})();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment