banquo v0.3.1
Banquo
Banquo builds off of Depict, a node library designed to use PhantomJS to take screenshots of interactive visualizations. Banquo is slightly different in that it is built to be called on a Node.js server and returns a base64-encoded version of the screenshot as jsonp, as opposed to saving the screenshot to a file.
As a result, Banquo doesn't run on the command line, as Depict does, but instead is called like the example below from another Node.js script.
NOTE: As of Banquo 0.3.0, it no longer requires you to install PhantomJs separately.
Installation
You'll generally install this as a dependency in your package.json.
npm install banquo --saveIf you want to install it without adding it to your package.json, run the command above without --save.
Usage
You can set up your own service with banquo by cloning banquo-server.
Note: Banquo server uses an older version of Banquo. Pull request welcome.
Here's a basic standalone setup:
var banquo = require('banquo');
var opts = {
mode: 'base64',
url: 'america.aljazeera.com',
viewport_width: 1440,
delay: 1000,
selector: '#articleHighlightList-0'
};
banquo.capture(opts, function(err, imageData){
if (err) {
console.log(err)
}
console.log(imageData);
});Or if mode is save and scrape is true you get the body markup. This behavior will be standardized in future versions so that just by setting scrape to true you'll get a third argument of the bodyMarkup. Pull request welcome.
var banquo = require('banquo');
var opts = {
mode: 'save',
url: 'america.aljazeera.com',
viewport_width: 1440,
delay: 1000,
selector: '#articleHighlightList-0',
scrape: true
};
banquo.capture(opts, function(err, bodyMarkup){
if (err) {
console.log(err)
}
console.log(bodyMarkup);
});Options
| Key | Required | Default | Options | Description |
|---|---|---|---|---|
| mode | no | base64 | save or base64 | The former will save a file to the out_file location and return a success string callback. The latter will return the image as a base64 string. |
| url | yes | null | String | The website you want to screenshot. |
| viewport_width | no | 1440 | Number (Pixels) | The desired browser width. Settings this to a higher number will increase processing time. |
| delay | no | 1000 | Number (Milliseconds) | How long to wait after the page has loaded before taking the screenshot. PhantomJS apparently waits for the page to load but if you have a map or other data calculations going on, you'll need to specify a wait time. |
| selector | no | body | String (CSS selector) | The div you want to screenshot. |
| css_hide | no | null | String (CSS selector) | Any divs you want to hide, such as zoom buttons on map. Defaults to none. |
| out_file | no | './image_%Y-%m-%d.png' | String (File path) | The name and location of the image file you want to save. Defaults to image_ plus the ISO year, month, day. |
| user_agent | no | null | String | Set a custom user-agent string. |
| scrape | no | false | Boolean | If set to true and mode is save will return the HTML as a string. Does not work if mode is base64. |