render_multi_url.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Render Multiple URLs to file
  2. "use strict";
  3. var RenderUrlsToFile, arrayOfUrls, system;
  4. system = require("system");
  5. /*
  6. Render given urls
  7. @param array of URLs to render
  8. @param callbackPerUrl Function called after finishing each URL, including the last URL
  9. @param callbackFinal Function called after finishing everything
  10. */
  11. RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
  12. var getFilename, next, page, retrieve, urlIndex, webpage;
  13. urlIndex = 0;
  14. webpage = require("webpage");
  15. page = null;
  16. getFilename = function() {
  17. return "rendermulti-" + urlIndex + ".png";
  18. };
  19. next = function(status, url, file) {
  20. page.close();
  21. callbackPerUrl(status, url, file);
  22. return retrieve();
  23. };
  24. retrieve = function() {
  25. var url;
  26. if (urls.length > 0) {
  27. url = urls.shift();
  28. urlIndex++;
  29. page = webpage.create();
  30. page.viewportSize = {
  31. width: 800,
  32. height: 600
  33. };
  34. page.settings.userAgent = "Phantom.js bot";
  35. return page.open("http://" + url, function(status) {
  36. var file;
  37. file = getFilename();
  38. if (status === "success") {
  39. return window.setTimeout((function() {
  40. page.render(file);
  41. return next(status, url, file);
  42. }), 200);
  43. } else {
  44. return next(status, url, file);
  45. }
  46. });
  47. } else {
  48. return callbackFinal();
  49. }
  50. };
  51. return retrieve();
  52. };
  53. arrayOfUrls = null;
  54. if (system.args.length > 1) {
  55. arrayOfUrls = Array.prototype.slice.call(system.args, 1);
  56. } else {
  57. console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
  58. arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "phantomjs.org"];
  59. }
  60. RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
  61. if (status !== "success") {
  62. return console.log("Unable to render '" + url + "'");
  63. } else {
  64. return console.log("Rendered '" + url + "' at '" + file + "'");
  65. }
  66. }), function() {
  67. return phantom.exit();
  68. });