| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- const Puppeteer = require('puppeteer');
- const sleep = (ms) => { return new Promise((resolve) => { setTimeout(resolve, ms) }) };
- const log4js = require("log4js");
- // 日志配置
- log4js.configure({
- appenders: { logs: { type: "file", filename: "./logs.log" } },
- categories: { default: { appenders: ["logs"], level: "debug" } }
- });
- const logger = log4js.getLogger('logs');
- const ID = process.argv[2]
- const PWD = process.argv[3]
- const TIME = process.argv[4]
- // 获取数据
- const getData = async (browser, page, time) => {
- await sleep(1000)
- // 获取列表
- const list = await page.$$eval('.has-emoji', divs => divs.map(divs => ({ label: divs.textContent, href: divs.href, who: divs.parentNode.lastElementChild.textContent.replace(/[\'\"\\\/\b\f\n\r\t]/g, '') })));
- logger.debug(`${new Date().toLocaleDateString()}清单:${JSON.stringify(list)}`);
- await sleep(1000)
- // 循环同意变更
- for (let k = 0; k < list.length; k++) {
- const el = list[k];
- const newPage = await browser.newPage();
- await newPage.goto(el.href, { timeout: 0 })
- await newPage.$$eval('.content>.segment button', async (divs) => {
- const sleepd = (ms) => { return new Promise((resolve) => { setTimeout(resolve, ms) }) }
- for (let j = 0; j < divs.length; j++) {
- const es = divs[j];
- if (es.textContent.includes('合并请求')) {
- es.click()
- await sleepd(1000)
- }
- }
- })
- await sleep(1000)
- newPage.close()
- }
- // reload
- await sleep(1000)
- page.reload()
- console.log('清单', list);
- await sleep(time)
- getData(browser, page, time)
- }
- (async () => {
- // init
- const browser = await Puppeteer.launch({
- headless: true,
- timeout: 0,
- defaultViewport: { width: 1920, height: 1080 }
- });
- // login
- const page = await browser.newPage();
- const tab = await page.goto('http://git.jdjinsui.com/pulls');
- const isLogin = tab.url().includes('/user/login');
- if (isLogin) {
- await page.type('input', ID, { delay: 150 });
- await page.type('input[type="password"]', PWD, { delay: 100 });
- await page.click('button');
- }
- await getData(browser, page, Number(TIME))
- })()
|