Gemini-Tooluse-Prototype / playwright_service.js
xarical's picture
Clean up playwright_service.js
762c6c4
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}`);
});