rsshub
Version:
Make RSS Great Again!
55 lines (53 loc) • 1.9 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
import * as cheerio from "cheerio";
//#region lib/routes/psnine/node.ts
const handler = async (ctx) => {
const { id = "news", order = "obdate" } = ctx.req.param();
const currentUrl = `https://www.psnine.com/node/${id}?ob=${order}`;
const response = await ofetch_default(currentUrl);
const $ = cheerio.load(response);
$(".psnnode, .node").remove();
const list = $(".title a").toArray().map((item) => {
const $item = $(item);
const meta = $item.parent().next();
return {
title: $item.text(),
link: $item.attr("href"),
pubDate: timezone(parseDate(meta.contents().filter((_, i) => i.nodeType === 3).text().trim().split(/\s{2,}/)[0], ["YYYY-MM-DD HH:mm", "MM-DD HH:mm"]), 8)
};
});
const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
const detailResponse = await ofetch_default(item.link);
const $$1 = cheerio.load(detailResponse);
item.author = $$1("a[itemprop=\"author\"]").eq(0).text();
item.description = $$1("div[itemprop=\"articleBody\"]").html();
return item;
})));
return {
title: `${$("title").text()} - PSN中文站`,
link: currentUrl,
item: items
};
};
const route = {
path: "/node/:id?/:order?",
parameters: {
id: "节点 id,见下表,默认为 news",
order: "排序,`date` 即最新,默认为 `obdate` 即综合排序"
},
categories: ["game"],
example: "/psnine/node/news",
name: "节点",
maintainers: ["betta-cyber", "nczitzk"],
handler,
radar: [{ source: ["psnine.com/node/:id"] }]
};
//#endregion
export { route };