格式化工具

This commit is contained in:
wenpeng 2024-09-11 23:13:20 +08:00
parent f553840132
commit df3560cc6f
4 changed files with 71 additions and 30 deletions

13
.prettierrc Normal file
View File

@ -0,0 +1,13 @@
{
"printWidth": 100,
"tabWidth": 4,
"semi": true,
"singleQuote": false,
"quoteProps": "consistent",
"trailingComma": "es5",
"bracketSpacing": true,
"arrowParens": "avoid",
"proseWrap": "never",
"endOfLine": "lf",
"embeddedLanguageFormatting": "off"
}

View File

@ -1,19 +1,26 @@
import { launch } from 'puppeteer';
import 'dotenv/config.js'
import { injectionCookie } from '../utils/userUtils.js';
import fs from 'fs';
import { launch } from "puppeteer";
import "dotenv/config.js";
import { injectionCookie } from "../utils/userUtils.js";
import fs from "fs";
import dotenv from "dotenv";
dotenv.config();
(async () => {
const browser = await launch({ headless: false, args: [`--window-size=1920,1080`], defaultViewport: { width: 1920, height: 1080 } });
const browser = await launch({
headless: false,
args: [`--window-size=1920,1080`],
defaultViewport: { width: 1920, height: 1080 },
});
const page = await browser.newPage();
page.on("console", msg => console.log("PAGE LOG", msg.text()));
page.on("error", error => console.error("PAGE error", error));
// 注入cookie
const webUrl = 'https://www.zhihu.com/hot';
const cookieFileUrl = './data/zhihu.json';
const webUrl = "https://www.zhihu.com/hot";
const cookieFileUrl = "./data/zhihu.json";
await injectionCookie(page, webUrl, cookieFileUrl);
const hotItems = await page.$$('.HotList-list .HotItem');
console.log("========");
const hotItems = await page.$$(".HotList-list .HotItem");
const hotText = new Array();
@ -21,18 +28,39 @@ import fs from 'fs';
if (Object.hasOwnProperty.call(hotItems, hot)) {
const element = hotItems[hot];
const h2Element = await element.$('h2');
const pElement = await element.$('p');
const h2Element = await element.$("h2");
const pElement = await element.$("p");
const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : '';
const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : '';
hotText.push({ title, excerpt });
const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : "";
const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : "";
const createTime = Date.now();
hotText.push({ title, excerpt, createTime });
}
}
console.log("end...");
fs.writeFileSync('./data/zhihuData.json', JSON.stringify(hotText, null, 2));
fs.writeFileSync("./data/zhihuData.json", JSON.stringify(hotText, null, 2));
const url = process.env.URL;
console.log(process.env.URL);
try {
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(hotText, null, 2),
});
if (!response.ok) {
throw new Error(`Http error! status : ${response.status}`);
}
const responseData = await response.json();
console.log("Repsonse data", responseData);
} catch (error) {
console.error(error);
}
await browser.close();
})();
})();

View File

@ -4,4 +4,4 @@
"dotenv": "^16.4.5",
"puppeteer": "^22.13.1"
}
}
}

View File

@ -1,38 +1,38 @@
import fs from 'fs';
import fs from "fs";
/**
* 设置页面的LocalStorage
* @param {*} page
* @param {*} page
* @param {String} file 用户信息
*/
export async function setLocalStorage(page, file) {
const outputLocalStorge = fs.readFileSync(file, 'utf-8');
const outputLocalStorge = fs.readFileSync(file, "utf-8");
let localStorageTest = JSON.parse(outputLocalStorge);
// 设置页面的localStorage
await page.evaluateOnNewDocument(localStorageTest => {
localStorage.clear();
localStorage.setItem('merchant_access_token', localStorageTest.merchant_access_token);
localStorage.setItem('merchant_refresh_token', localStorageTest.merchant_refresh_token);
localStorage.setItem('merchant_login_data', localStorageTest.merchant_login_data);
localStorage.setItem('merchant_metadata_data', localStorageTest.merchant_metadata_data);
localStorage.setItem("merchant_access_token", localStorageTest.merchant_access_token);
localStorage.setItem("merchant_refresh_token", localStorageTest.merchant_refresh_token);
localStorage.setItem("merchant_login_data", localStorageTest.merchant_login_data);
localStorage.setItem("merchant_metadata_data", localStorageTest.merchant_metadata_data);
}, localStorageTest);
console.log('set success');
console.log("set success");
}
/**
* @param {Page} page
* @param {Page} page
* @param {String} webUrl 网站
* @param {String} cookieFile cookie地址Url
*/
export async function injectionCookie(page, webUrl, cookieFile) {
try {
await page.goto(webUrl);
const cookies = JSON.parse(fs.readFileSync(cookieFile, 'utf-8'));
const cookies = JSON.parse(fs.readFileSync(cookieFile, "utf-8"));
await page.setCookie(...cookies);
await page.goto(webUrl);
} catch (error) {
console.error(error);
}
}
}