UNPKG

rsshub

Version:
58 lines (56 loc) 2.17 kB
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import * as cheerio from "cheerio"; import CryptoJS from "crypto-js"; //#region lib/routes/dxy/utils.ts const APP_SIGN_KEY = "4bTogwpz7RzNO2VTFtW7zcfRkAE97ox6ZSgcQi7FgYdqrHqKB7aGqEZ4o7yssa2aEXoV3bQwh12FFgVNlpyYk2Yjm9d2EZGeGu3"; const phoneBaseUrl = "https://3g.dxy.cn"; const webBaseUrl = "https://www.dxy.cn"; const generateNonce = (length = 8, type = "alphabet") => { const characters = { alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", number: "0123456789" }; let result = ""; const selectedCharacters = characters[type] || characters.alphabet; for (let i = 0; i < length; i++) result += selectedCharacters.charAt(Math.floor(Math.random() * selectedCharacters.length)); return result; }; const sign = (params) => { const searchParams = new URLSearchParams(params); searchParams.append("appSignKey", APP_SIGN_KEY); searchParams.sort(); return CryptoJS.SHA1(searchParams.toString()).toString(); }; const getPost = (item, tryGet) => tryGet(item.link, async () => { const postParams = { postId: item.postId, serverTimestamp: Date.now(), timestamp: Date.now(), noncestr: generateNonce(8, "number") }; const post = await ofetch_default("https://www.dxy.cn/bbs/newweb/post/detail", { query: { ...postParams, sign: sign(postParams) } }); if (post.code !== "success") throw new Error(post.message); const $ = cheerio.load(post.data.body, null, false); $("img").each((_, img) => { img = $(img); if (img.data("hsrc")) { img.attr("src", img.data("hsrc")); img.removeAttr("data-hsrc"); } if (img.data("osrc")) { img.attr("src", img.data("osrc")); img.removeAttr("data-osrc"); } }); item.description = $.html(); item.pubDate = parseDate(post.data.createTime, "x"); item.updated = post.data.lastEditTime ? parseDate(post.data.lastEditTime, "x") : item.pubDate; item.category = [...new Set([...item.category, ...post.data.tagInfos.map((tag) => tag.tagName)])]; return item; }); //#endregion export { webBaseUrl as a, sign as i, getPost as n, phoneBaseUrl as r, generateNonce as t };