| author | ymh <ymh.work@gmail.com> |
| Fri, 19 Jul 2024 09:38:03 +0200 | |
| changeset 704 | b5835dca2624 |
| permissions | -rw-r--r-- |
|
704
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
1 |
//from https://github.com/makinacorpus/django-screamshot |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
2 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
3 |
const puppeteer = require('puppeteer'); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
4 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
5 |
function delay(time) { |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
6 |
return new Promise(function(resolve) { |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
7 |
setTimeout(resolve, time) |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
8 |
}); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
9 |
} |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
10 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
11 |
/** |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
12 |
* arguments: |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
13 |
* [1] => URL |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
14 |
* [2] => output. Use /dev/stdout if you want to capture. |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
15 |
* [3] => size |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
16 |
*/ |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
17 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
18 |
var address = process.argv[2], |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
19 |
output = process.argv[3]; |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
20 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
21 |
config = {} |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
22 |
process.argv.forEach(function(arg, i) { |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
23 |
if (i > 3) { |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
24 |
namev = arg.split('='); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
25 |
config[namev[0].replace('--', '')] = namev[1]; |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
26 |
} |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
27 |
}); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
28 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
29 |
const width = parseInt(config.width || 1920), |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
30 |
height = parseInt(config.height || 1080), |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
31 |
wait = parseInt(config.wait || 1080); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
32 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
33 |
(async () => { |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
34 |
const browser = await puppeteer.launch({ |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
35 |
defaultViewport: {width: width, height: height}, |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
36 |
ignoreHTTPSErrors: true, |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
37 |
}); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
38 |
const page = await browser.newPage(); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
39 |
await page.goto(address, {waitUntil: 'domcontentloaded'}); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
40 |
// Wait until page has loaded completely |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
41 |
await delay(wait); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
42 |
// Make a screenshot |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
43 |
await page.screenshot({path: output}); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
44 |
|
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
45 |
await browser.close(); |
|
b5835dca2624
Adapt renkan preview to uses chrome headless/puppeteer
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
46 |
})(); |