diff --git a/app/utils/powerSchedule.js b/app/utils/powerSchedule.js index 8fa1dac..d2286a4 100644 --- a/app/utils/powerSchedule.js +++ b/app/utils/powerSchedule.js @@ -13,37 +13,54 @@ const zulip = require("zulip-js"); realm: "https://zulip.ipsupply.com.au", }; const client = await zulip(config); - // Open a new page const page = await browser.newPage(); - await page.goto("https://ithongtin.com/lich-cup-dien/can-tho/ninh-kieu"); - const data = await page.evaluate(() => { - const title = document.title; - const paragraphText = document.querySelector("table").textContent; - console.log(paragraphText) - return { - title, - paragraphText, - }; - }); - await browser.close(); - - if ( - data.paragraphText - .split(" ") - .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 - ) { - let params = { - type: "stream", - to: "Result test - auto.nswteam.net", - topic: "Lịch cúp điện", - content: - ":warning: :date: :warning:\n" + - data.paragraphText - .split(" ") - .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0]?.replace(/ /g,"\n\n")?.replace(/KDC 91B/g,"**KDC 91B**") + - "\n-------", - }; - client.messages.send(params); - } + // Đ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')); + }); + + console.log('Table data:', tableData); + + await browser.close(); + + if ( + tableData.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 + ) { + let params = { + type: "stream", + to: "Result test - auto.nswteam.net", + topic: "Lịch cúp điện", + 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); + } + }, 5000); + })(); \ No newline at end of file diff --git a/screenshot.js b/screenshot.js index 2e0f732..540b409 100644 --- a/screenshot.js +++ b/screenshot.js @@ -2,53 +2,84 @@ const puppeteer = require("puppeteer"); const zulip = require("zulip-js"); (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); - // Open a new page + const browser = await puppeteer.launch(); const page = await browser.newPage(); - await page.goto("https://ithongtin.com/lich-cup-dien/can-tho/ninh-kieu"); - const data = await page.evaluate(() => { - const title = document.title; - const paragraphText = document.querySelector("table").textContent; - return { - title, - paragraphText, - }; - }); - await browser.close(); - -console.log("data: ", -data.paragraphText - .split(" ") - .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))) - // if ( - // data.paragraphText - // .split(" ") - // .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 - // ) { - // let params = { - // type: "stream", - // to: "Result test - auto.nswteam.net", - // topic: "Lịch cúp điện", - // content: - // ":warning: :date: :warning:\n" + - // data.paragraphText - // .split(" ") - // .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0]?.replace(/ /g,"\n\n")?.replace(/KDC 91B/g,"**KDC 91B**") + - // "\n-------", - // }; - // client.messages.send(params); - // } + + // Đ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("table"); // 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ẻ + // const headerRow = document.querySelectorAll("thead"); // Lựa chọn tất cả các hàng (thẻ ) bên trong thẻ + // Lấy tên các cột từ hàng đầu (thẻ ) + // const headerColumns = headerRow.querySelectorAll("tr"); + // const columnNames = headerColumns.map((headerColumn) => + // headerColumn.textContent.trim() + // ); + const data1 = []; + // headerColumns.forEach((clo) => { + // const columns = Array.from(clo.querySelectorAll("th")); // 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 + // data1.push(rowData); // Thêm dữ liệu của hàng vào mảng data + // }); + + // 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 headers = Array.from(row.querySelectorAll("th")); + const rowHeader = headers.map((header) => header.textContent.trim()); + 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 + data1.push(rowHeader) + }); + + return { data: data, columnNames: data1 }; + }); + const content = [] + tableData.data?.map((u,index)=>{ + for(let i=0; i i.includes("KDC 91B") || i.includes("KDC91B"))) +// if ( +// data.paragraphText +// .split(" ") +// .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 +// ) { +// let params = { +// type: "stream", +// to: "Result test - auto.nswteam.net", +// topic: "Lịch cúp điện", +// content: +// ":warning: :date: :warning:\n" + +// data.paragraphText +// .split(" ") +// .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0]?.replace(/ /g,"\n\n")?.replace(/KDC 91B/g,"**KDC 91B**") + +// "\n-------", +// }; +// client.messages.send(params); +// } // const zulip = require("zulip-js");