rsshub
Version:
Make RSS Great Again!
90 lines (88 loc) • 3.05 kB
JavaScript
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 };