const express = require('express'); const puppeteer = require('puppeteer'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/', async (req, res) => { let browser; try { browser = await puppeteer.launch({ headless: true }); const page = await browser.newPage(); await page.goto('https://www.helakuru.lk/esana', { waitUntil: 'networkidle2' }); await page.waitForSelector('.news_row_esena', { timeout: 5000 }); const latestNews = await page.evaluate(() => { const firstNews = document.querySelector('.news_row_esena'); if (!firstNews) return null; return { id: firstNews.getAttribute('data-news-id'), image: firstNews.querySelector('#newsThumbnailVerti')?.src || null, title: firstNews.querySelector('p.mb-0')?.innerText.trim() || null, time: firstNews.querySelector('span.news_time')?.innerText.trim() || null, }; }); const detailUrl = `https://www.helakuru.lk/esana/news/${latestNews.id}`; await page.goto(detailUrl, { waitUntil: 'networkidle2' }); await page.waitForSelector('#main-news-container-without-comments', { timeout: 5000 }); const details = await page.evaluate(() => { const getText = (selector) => document.querySelector(selector)?.innerText.trim() || null; const getImage = () => document.querySelector('#newsThumbnail img')?.src || document.querySelector('#newsThumbnail')?.src || null; return { image: getImage(), title: getText('#main-news-container-without-comments h2'), time: getText('#main-news-container-without-comments span'), desc: getText('#main-news-container-without-comments .news-single-content'), }; }); const fullJSON = { latestNews, details }; const html = ` News by MrHansamala
`; res.send(html); } catch (error) { res.status(500).send(`

❌ Error:

${error.message}
`); } finally { if (browser) await browser.close(); } }); app.listen(PORT, () => { console.log(`🚀 Server running at http://localhost:${PORT}`); });