39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
const puppeteer = require("puppeteer");
|
|
const fs = require("fs");
|
|
const PNG = require("pngjs").PNG;
|
|
|
|
function sleep(ms) {
|
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
}
|
|
|
|
const URL = process.env.URL || "CHANGEME";
|
|
|
|
(async () => {
|
|
const browser = await puppeteer.launch({
|
|
args: ["--no-sandbox", "--disable-setuid-sandbox"],
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
|
|
/* Kindle 4 NT resolution */
|
|
await page.setViewport({ width: 600, height: 800 });
|
|
|
|
/* Might want to use networkidle0 here, depending on the type of page */
|
|
/* See https://github.com/puppeteer/puppeteer/blob/main/docs/api.md */
|
|
await page.goto(URL, { waitUntil: "networkidle2" });
|
|
|
|
/* This is a bit silly. ¯\_(ツ)_/¯
|
|
Networkidle2 doesn't always seem to wait long enough. */
|
|
await sleep(3000);
|
|
|
|
await page.screenshot({ path: "dash.png" });
|
|
|
|
await fs.createReadStream("dash.png")
|
|
.pipe(new PNG({ colorType: 0 }))
|
|
.on("parsed", function () {
|
|
this.pack().pipe(fs.createWriteStream("dash.png"));
|
|
});
|
|
|
|
browser.close();
|
|
})();
|