update function powerSchedule

This commit is contained in:
joseph le 2023-10-03 22:24:40 +07:00
parent 2e195e2630
commit 52ee65cf53
2 changed files with 124 additions and 76 deletions

View File

@ -13,37 +13,54 @@ const zulip = require("zulip-js");
realm: "https://zulip.ipsupply.com.au", realm: "https://zulip.ipsupply.com.au",
}; };
const client = await zulip(config); const client = await zulip(config);
// Open a new page
const page = await browser.newPage(); 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 ( // Điều hướng đến trang web chứa thẻ <a>
data.paragraphText await page.goto("https://www.cskh.evnspc.vn/TraCuu/LichNgungGiamCungCapDien");
.split(" ")
.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 // Tìm thẻ <a> cần click dựa trên selector CSS hoặc XPath
) { const selectBoxSelector1 = "select#idCongTyDienLuc";
let params = { await page.waitForSelector(selectBoxSelector1);
type: "stream", await page.select(selectBoxSelector1, "PB11");
to: "Result test - auto.nswteam.net",
topic: "Lịch cúp điện", // Chờ cho trang mới mở
content: // await page.waitForNavigation('select#idCongTyDienLuc');
":warning: :date: :warning:\n" +
data.paragraphText // In ra nội dung của trang mới
.split(" ") setTimeout(async () => {
.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0]?.replace(/ /g,"\n\n")?.replace(/KDC 91B/g,"**KDC 91B**") + const tableData = await page.evaluate(() => {
"\n-------", const tbody = document.querySelector('tbody'); // Lựa chọn thẻ <tbody> cần trích xuất
}; const rows = tbody.querySelectorAll('tr'); // Lựa chọn tất cả các hàng (thẻ <tr>) bên trong thẻ <tbody>
client.messages.send(params);
} // Lặp qua từng hàng và lấy nội dung của các cột (thẻ <td>) 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ẻ <td>) 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);
})(); })();

View File

@ -2,53 +2,84 @@ const puppeteer = require("puppeteer");
const zulip = require("zulip-js"); const zulip = require("zulip-js");
(async () => { (async () => {
// Launch a headless browser const browser = await puppeteer.launch();
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 page = await browser.newPage(); const page = await browser.newPage();
await page.goto("https://ithongtin.com/lich-cup-dien/can-tho/ninh-kieu");
const data = await page.evaluate(() => { // Điều hướng đến trang web chứa thẻ <a>
const title = document.title; await page.goto("https://www.cskh.evnspc.vn/TraCuu/LichNgungGiamCungCapDien");
const paragraphText = document.querySelector("table").textContent;
return { // Tìm thẻ <a> cần click dựa trên selector CSS hoặc XPath
title, const selectBoxSelector1 = "select#idCongTyDienLuc";
paragraphText, await page.waitForSelector(selectBoxSelector1);
}; await page.select(selectBoxSelector1, "PB11");
});
await browser.close(); // Chờ cho trang mới mở
// await page.waitForNavigation('select#idCongTyDienLuc');
console.log("data: ",
data.paragraphText // In ra nội dung của trang mới
.split(" ") setTimeout(async () => {
.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))) const tableData = await page.evaluate(() => {
// if ( const tbody = document.querySelector("table"); // Lựa chọn thẻ <tbody> cần trích xuất
// data.paragraphText const rows = tbody.querySelectorAll("tr"); // Lựa chọn tất cả các hàng (thẻ <tr>) bên trong thẻ <tbody>
// .split(" ") // const headerRow = document.querySelectorAll("thead"); // Lựa chọn tất cả các hàng (thẻ <tr>) bên trong thẻ <tbody>
// .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 // Lấy tên các cột từ hàng đầu (thẻ <th>)
// ) { // const headerColumns = headerRow.querySelectorAll("tr");
// let params = { // const columnNames = headerColumns.map((headerColumn) =>
// type: "stream", // headerColumn.textContent.trim()
// to: "Result test - auto.nswteam.net", // );
// topic: "Lịch cúp điện", const data1 = [];
// content: // headerColumns.forEach((clo) => {
// ":warning: :date: :warning:\n" + // const columns = Array.from(clo.querySelectorAll("th")); // Lựa chọn tất cả các cột (thẻ <td>) trong hàng
// data.paragraphText // 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
// .split(" ") // data1.push(rowData); // Thêm dữ liệu của hàng vào mảng data
// .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0]?.replace(/ /g,"\n\n")?.replace(/KDC 91B/g,"**KDC 91B**") + // });
// "\n-------",
// }; // Lặp qua từng hàng và lấy nội dung của các cột (thẻ <td>) trong hàng
// client.messages.send(params); const data = [];
// } rows.forEach((row) => {
const columns = Array.from(row.querySelectorAll("td")); // Lựa chọn tất cả các cột (thẻ <td>) 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<u.length;i++){
tableData.data[index] = tableData.columnNames[index]+": "+u[]
}
})
console.log("Table data:", );
await browser.close();
}, 5000);
})(); })();
// 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);
// }
// const zulip = require("zulip-js"); // const zulip = require("zulip-js");