同步操作将从 进击的皇虫/BookStack 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
'use strict';const puppeteer = require('puppeteer');const fs = require("fs");let args = process.argv.splice(2);let l=args.length;let url, folder, selector;for(let i=0;i<l;i++){switch (args[i]){case "--url":url = args[i+1];if (url==undefined){url = "";}break;case '--folder':folder = args[i+1];break;case '--selector':selector = args.splice(i+1).join("");i=l;break;}i++;}async function screenshot() {const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: true, ignoreHTTPSErrors: true});const page = await browser.newPage();let shot = false;if(folder && selector){shot = true;page.setViewport({width: 1280, height: 20480});}page.setExtraHTTPHeaders({"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","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"});await page.setRequestInterception(true);page.on("request", request => {getHost(request.url()).indexOf("google")>-1 ? request.abort() : request.continue();});let timeout = shot ? 120000 : 60000;await page.goto(url, {"waitUntil" : ['networkidle2', 'domcontentloaded'], "timeout":timeout});let res;if(shot){if (folder.substr(folder.length-1,1)!="/"){folder=folder+"/"}res = await page.evaluate(function (ele) {let bodyHeight = document.querySelector("body").clientHeightlet data = new Array();let eleSlice=ele.split(",");for (let i = 0; i < eleSlice.length; i++) {let d = [],item = eleSlice[i];let elements = document.querySelectorAll(item);for (var element of elements){let bounding = element.getBoundingClientRect();let x = bounding.x;let y = bounding.y;let width = bounding.width;let height = bounding.height;d.push({x, y, width, height});}data.push(d)}return {height: bodyHeight, data: data};}, selector);fs.writeFile(folder+'screenshot.json', JSON.stringify(res),function(){});await page.screenshot({path: folder+'screenshot.png', fullPage: true});}let content=await page.content();console.log(content);await browser.close();}function getHost(url) {let u = String(url).toLowerCase()if (u.startsWith("https://") || u.startsWith("http://")){return u.split("/")[2]}return ""}if (url) screenshot();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。