Spaces:
Sleeping
Sleeping
import express from "express"; | |
import { chromium } from "playwright"; | |
const app = express(); | |
app.use(express.json()); | |
app.post("/search", async (req, res) => { | |
// Validate query | |
const { query } = req.body; | |
if (!query) return res.status(400).json({ error: "Missing query" }); | |
// Start new browser sesion | |
let browser; | |
try { | |
browser = await chromium.launch({ headless: true }); | |
const context = await browser.newContext({ | |
userAgent: | |
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", | |
viewport: { width: 1280, height: 800 }, | |
locale: "en-US", | |
}); | |
// Open new page with Bing's HTML search endpoint | |
const page = await context.newPage(); | |
await page.goto( | |
"https://www.bing.com/search?q=" + encodeURIComponent(query), | |
{ waitUntil: "domcontentloaded" } | |
); | |
await page.waitForTimeout(1200 + Math.floor(Math.random() * 800)); // Random delay | |
// Retrive text from the results | |
const visibleText = await page.evaluate(() => document.body.innerText); | |
res.json({ result: visibleText }); | |
} catch (e) { | |
console.error("Playwright error:", e); | |
res.status(500).json({ error: e.message }); | |
} finally { | |
if (browser) await browser.close(); | |
} | |
}); | |
// Start express server | |
const PORT = process.env.PLAYWRIGHT_PORT || 5000; | |
app.listen(PORT, () => { | |
console.log(`Playwright service running on port ${PORT}`); | |
}); | |