UNPKG

rsshub

Version:
90 lines (88 loc) 3.05 kB
import "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import "./parse-date-BrP7mxXf.mjs"; import "./md5-C8GRvctM.mjs"; import "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as config_not_found_default } from "./config-not-found-Dyp3RlZZ.mjs"; import { n as finishArticleItem } from "./wechat-mp-Dq_pp853.mjs"; import { t as utils_default } from "./utils-DeYxPJe3.mjs"; import { load } from "cheerio"; //#region lib/routes/newrank/wechat.ts const route = { path: "/wechat/:wxid", categories: ["social-media"], example: "/newrank/wechat/chijiread", parameters: { wxid: "微信号,若微信号与新榜信息不一致,以新榜为准" }, features: { requireConfig: [{ name: "NEWRANK_COOKIE", description: "" }], requirePuppeteer: false, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, name: "微信公众号", maintainers: ["lessmoe", "pseudoyu"], handler }; async function handler(ctx) { if (!config.newrank || !config.newrank.cookie) throw new config_not_found_default("newrank RSS is disabled due to the lack of <a href=\"https://docs.rsshub.app/deploy/config#route-specific-configurations\">relevant config</a>"); const uid = ctx.req.param("wxid"); const nonce = utils_default.random_nonce(9); const { data: summaryHTML } = await got_default({ method: "get", url: `https://www.newrank.cn/new/readDetial?account=${uid}`, headers: { Connection: "keep-alive", Cookie: config.newrank.cookie } }); const mainsrc = load(summaryHTML)("script").toArray().find((item) => (item.attribs.src || "").startsWith("/new/static/js/main.")).attribs.src; const { data: mainScript } = await got_default({ method: "get", url: `https://www.newrank.cn${mainsrc}` }); const N_TOKEN_match = mainScript.match(/"N-Token":"([^"]+)/); if (!N_TOKEN_match) throw new Error("Cannot find n-token"); const N_TOKEN = N_TOKEN_match[1]; const response = await got_default({ method: "post", url: "https://gw.newrank.cn/api/wechat/xdnphb/detail/v1/rank/article/lists", headers: { Connection: "keep-alive", Cookie: config.newrank.cookie, "n-token": N_TOKEN }, form: { account: uid, nonce, xyz: utils_default.decrypt_wechat_detail_xyz(uid, nonce) } }); const name = response.data.value.user.name; const realTimeArticles = utils_default.flatten(response.data.value.realTimeArticles); const articles = utils_default.flatten(response.data.value.articles); const items = [...realTimeArticles, ...articles].map((item) => ({ id: item.id, title: item.title, description: "", link: item.url, pubDate: item.publicTime })); await Promise.all(items.map((item) => finishArticleItem(item))); return { title: name + " - 微信公众号", link: `https://www.newrank.cn/new/readDetial?account=${uid}`, item: items }; } //#endregion export { route };