const puppeteer = require("puppeteer"); const zulip = require("zulip-js"); const moment = require("moment"); const { addLogFunction } = require("./addLogFunctionJS"); (async () => { // Launch a headless browser const browser = await puppeteer.launch({ headless: true, args: ["--no-sandbox"], }); const config = { username: "networktool-bot@zulip.ipsupply.com.au", apiKey: "0jMAmOuhfLvBqKJikv5oAkyNM4RIEoAM", realm: "https://zulip.ipsupply.com.au", }; const client = await zulip(config); const page = await browser.newPage(); // Điều hướng đến trang web chứa thẻ await page.goto("https://www.cskh.evnspc.vn/TraCuu/LichNgungGiamCungCapDien"); // Tìm thẻ cần click dựa trên selector CSS hoặc XPath const selectBoxSelector1 = "select#idCongTyDienLuc"; await page.waitForSelector(selectBoxSelector1); await page.select(selectBoxSelector1, "PB11"); // Chờ cho trang mới mở // await page.waitForNavigation('select#idCongTyDienLuc'); // In ra nội dung của trang mới setTimeout(async () => { const tableData = await page.evaluate(() => { const tbody = document.querySelector("tbody"); // Lựa chọn thẻ cần trích xuất const rows = tbody.querySelectorAll("tr"); // Lựa chọn tất cả các hàng (thẻ ) bên trong thẻ // Lặp qua từng hàng và lấy nội dung của các cột (thẻ ) trong hàng const data = []; rows.forEach((row) => { const columns = Array.from(row.querySelectorAll("td")); // Lựa chọn tất cả các cột (thẻ ) trong hàng const rowData = columns.map((column) => column.textContent.trim()); // Lấy nội dung của các cột và xóa khoảng trắng data.push(rowData); // Thêm dữ liệu của hàng vào mảng data }); return data.map((u) => u.join("\n\n")); }); await browser.close(); let params = { type: "stream", to: "networkToolBot", topic: "powerSchedule", content: ":warning: :date: :warning:\n\n" + tableData.join("\n\n") + "\n-------", }; client.messages.send(params); let checkTime = moment(Date.now()).format("DD_MM_YYYY").toString() if ( tableData.filter((i) => (i.includes("KDC 91B") || i.includes("KDC91B")) && i.includes(checkTime)) .length > 0 ) { let params = { type: "stream", to: "APAC Tech Bão", topic: "Thông báo chung", content: ":warning: :date: :warning:\n\n" + tableData .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0] .replace(/KDC 91B/g, "**KDC 91B**") + "\n-------", }; client.messages.send(params); } const fileName = "/home/Log_service/app/store/logsAPI/" + moment(Date.now()).format("DD_MM_YYYY").toString() + ".log"; addLogFunction(fileName, JSON.stringify(params, null, 2), "powerSchedule") }, 5000); })();