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}`); | |
| }); | |