MCPcopy Create free account
hub / github.com/TruthHun/BookStack / screenshot

Function screenshot

crawl.js:29–83  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

27}
28
29async function screenshot() {
30 const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: true, ignoreHTTPSErrors: true});
31 const page = await browser.newPage();
32 let shot = false;
33 if(folder && selector){
34 shot = true;
35 page.setViewport({width: 1280, height: 20480});
36 }
37
38 page.setExtraHTTPHeaders({
39 "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,co;q=0.7,fr;q=0.6,zh-HK;q=0.5,zh-TW;q=0.4",
40 "User-Agent": "Mozi lla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3766.2 Safari/537.36"
41 });
42
43 await page.setRequestInterception(true);
44 page.on("request", request => {
45 getHost(request.url()).indexOf("google")>-1 ? request.abort() : request.continue();
46 });
47 let timeout = shot ? 120000 : 60000;
48
49 await page.goto(url, {"waitUntil" : ['networkidle2', 'domcontentloaded'], "timeout":timeout});
50 let res;
51 if(shot){
52 if (folder.substr(folder.length-1,1)!="/"){
53 folder=folder+"/"
54 }
55 res = await page.evaluate(function (ele) {
56 let bodyHeight = document.querySelector("body").clientHeight
57
58 let data = new Array();
59 let eleSlice=ele.split(",");
60
61 for (let i = 0; i < eleSlice.length; i++) {
62 let d = [],item = eleSlice[i];
63 let elements = document.querySelectorAll(item);
64 for (var element of elements){
65 let bounding = element.getBoundingClientRect();
66 let x = bounding.x;
67 let y = bounding.y;
68 let width = bounding.width;
69 let height = bounding.height;
70 d.push({x, y, width, height});
71 }
72 data.push(d)
73 }
74
75 return {height: bodyHeight, data: data};
76 }, selector);
77 fs.writeFile(folder+'screenshot.json', JSON.stringify(res),function(){});
78 await page.screenshot({path: folder+'screenshot.png', fullPage: true});
79 }
80 let content=await page.content();
81 console.log(content);
82 await browser.close();
83}
84
85function getHost(url) {
86 let u = String(url).toLowerCase()

Callers 1

crawl.jsFile · 0.70

Calls 1

getHostFunction · 0.85

Tested by

no test coverage detected