made copy of page, don't ask
This commit is contained in:
parent
ebae4cc90b
commit
f36999721d
|
@ -0,0 +1,52 @@
|
|||
import puppeteer from "puppeteer";
|
||||
import { scrollPageToBottom } from "puppeteer-autoscroll-down";
|
||||
import express from "express";
|
||||
import "dotenv/config";
|
||||
|
||||
const folderToServe = "/Users/tarasis/Programming/websites/rmcg.dev/www/";
|
||||
|
||||
const port = process.env.PORT || 4000;
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(express.static(folderToServe));
|
||||
app.get("/screenshot", async (req, res) => {
|
||||
const dynamicPage = express();
|
||||
dynamicPage.use(express.static(folderToServe));
|
||||
|
||||
const dynamicServer = dynamicPage.listen(0, async () => {
|
||||
const dynamicPort = dynamicServer.address().port;
|
||||
console.log(
|
||||
`Dynamic server is running at http://localhost:${dynamicPort}`
|
||||
);
|
||||
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
await page.goto(`http://localhost:${dynamicPort}`);
|
||||
|
||||
await page.waitForResponse((response) => response.status() === 200);
|
||||
|
||||
await scrollPageToBottom(page);
|
||||
|
||||
const screenshotBuffer = await page.screenshot({ fullPage: true });
|
||||
|
||||
// Respond with the image
|
||||
res.writeHead(200, {
|
||||
"Content-Type": "image/png",
|
||||
"Content-Length": screenshotBuffer.length,
|
||||
});
|
||||
res.end(screenshotBuffer);
|
||||
// other option is just to save the file to disk
|
||||
// await page.screenshot({ path: 'example.png' });
|
||||
// Close the browser
|
||||
|
||||
await browser.close();
|
||||
console.log(`Closing dynamic server http://localhost:${dynamicPort}`);
|
||||
|
||||
await dynamicServer.close();
|
||||
});
|
||||
});
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Server is running at http://localhost:${port}`);
|
||||
});
|
Loading…
Reference in New Issue