Create server.js
Browse files
server.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const express = require("express");
|
| 2 |
+
const { chromium } = require("playwright");
|
| 3 |
+
const app = express();
|
| 4 |
+
|
| 5 |
+
app.get("/", async (req, res) => {
|
| 6 |
+
const { url, type } = req.query;
|
| 7 |
+
|
| 8 |
+
if (!url) return res.status(400).json({ error: "Missing url query parameter" });
|
| 9 |
+
if (!["mobile", "desktop"].includes(type)) return res.status(400).json({ error: "Invalid type" });
|
| 10 |
+
|
| 11 |
+
const browser = await chromium.launch();
|
| 12 |
+
const context = await browser.newContext({
|
| 13 |
+
viewport: type === "mobile" ? { width: 375, height: 812 } : { width: 1280, height: 720 }
|
| 14 |
+
});
|
| 15 |
+
|
| 16 |
+
const page = await context.newPage();
|
| 17 |
+
await page.goto(url, { waitUntil: "load" });
|
| 18 |
+
|
| 19 |
+
const screenshotBuffer = await page.screenshot();
|
| 20 |
+
await browser.close();
|
| 21 |
+
|
| 22 |
+
res.setHeader("Content-Type", "image/png");
|
| 23 |
+
res.send(screenshotBuffer);
|
| 24 |
+
});
|
| 25 |
+
|
| 26 |
+
app.listen(7860)
|