75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
|
// Render Multiple URLs to file
|
||
|
|
||
|
"use strict";
|
||
|
var RenderUrlsToFile, arrayOfUrls, system;
|
||
|
|
||
|
system = require("system");
|
||
|
|
||
|
/*
|
||
|
Render given urls
|
||
|
@param array of URLs to render
|
||
|
@param callbackPerUrl Function called after finishing each URL, including the last URL
|
||
|
@param callbackFinal Function called after finishing everything
|
||
|
*/
|
||
|
RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
|
||
|
var getFilename, next, page, retrieve, urlIndex, webpage;
|
||
|
urlIndex = 0;
|
||
|
webpage = require("webpage");
|
||
|
page = null;
|
||
|
getFilename = function() {
|
||
|
return "rendermulti-" + urlIndex + ".png";
|
||
|
};
|
||
|
next = function(status, url, file) {
|
||
|
page.close();
|
||
|
callbackPerUrl(status, url, file);
|
||
|
return retrieve();
|
||
|
};
|
||
|
retrieve = function() {
|
||
|
var url;
|
||
|
if (urls.length > 0) {
|
||
|
url = urls.shift();
|
||
|
urlIndex++;
|
||
|
page = webpage.create();
|
||
|
page.viewportSize = {
|
||
|
width: 800,
|
||
|
height: 600
|
||
|
};
|
||
|
page.settings.userAgent = "Phantom.js bot";
|
||
|
return page.open("http://" + url, function(status) {
|
||
|
var file;
|
||
|
file = getFilename();
|
||
|
if (status === "success") {
|
||
|
return window.setTimeout((function() {
|
||
|
page.render(file);
|
||
|
return next(status, url, file);
|
||
|
}), 200);
|
||
|
} else {
|
||
|
return next(status, url, file);
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
return callbackFinal();
|
||
|
}
|
||
|
};
|
||
|
return retrieve();
|
||
|
};
|
||
|
|
||
|
arrayOfUrls = null;
|
||
|
|
||
|
if (system.args.length > 1) {
|
||
|
arrayOfUrls = Array.prototype.slice.call(system.args, 1);
|
||
|
} else {
|
||
|
console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
|
||
|
arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "phantomjs.org"];
|
||
|
}
|
||
|
|
||
|
RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
|
||
|
if (status !== "success") {
|
||
|
return console.log("Unable to render '" + url + "'");
|
||
|
} else {
|
||
|
return console.log("Rendered '" + url + "' at '" + file + "'");
|
||
|
}
|
||
|
}), function() {
|
||
|
return phantom.exit();
|
||
|
});
|