格式化工具

This commit is contained in:
wenpeng 2024-09-12 22:52:06 +08:00
parent 57e16fa7d9
commit 5042f80954
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 { launch } from "puppeteer";
import 'dotenv/config.js' import "dotenv/config.js";
import { injectionCookie } from '../utils/userUtils.js'; import { injectionCookie } from "../utils/userUtils.js";
import fs from 'fs'; import fs from "fs";
import dotenv from "dotenv";
dotenv.config();
(async () => { (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(); 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 // 注入cookie
const webUrl = 'https://www.zhihu.com/hot'; const webUrl = "https://www.zhihu.com/hot";
const cookieFileUrl = './data/zhihu.json'; const cookieFileUrl = "./data/zhihu.json";
await injectionCookie(page, webUrl, cookieFileUrl); await injectionCookie(page, webUrl, cookieFileUrl);
const hotItems = await page.$$('.HotList-list .HotItem'); const hotItems = await page.$$(".HotList-list .HotItem");
console.log("========");
const hotText = new Array(); const hotText = new Array();
@ -21,18 +28,39 @@ import fs from 'fs';
if (Object.hasOwnProperty.call(hotItems, hot)) { if (Object.hasOwnProperty.call(hotItems, hot)) {
const element = hotItems[hot]; const element = hotItems[hot];
const h2Element = await element.$('h2'); const h2Element = await element.$("h2");
const pElement = await element.$('p'); const pElement = await element.$("p");
const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : ''; const title = h2Element != null ? await h2Element.evaluate(e => e.textContent) : "";
const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : ''; const excerpt = pElement != null ? await pElement.evaluate(e => e.textContent) : "";
const createTime = Date.now();
hotText.push({ title, excerpt }); 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(); await browser.close();
})(); })();

View File

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

View File

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