rsshub
Version:
Make RSS Great Again!
47 lines (46 loc) • 2.05 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
import { t as timezone } from "./timezone-DE--ze1V.mjs";
import { load } from "cheerio";
//#region lib/routes/discuss/index.ts
const route = {
path: "/:fid",
categories: ["new-media"],
example: "/discuss/62",
parameters: { fid: "fid,可在对应板块页的 URL 中找到" },
name: "版塊",
maintainers: ["nczitzk"],
features: { antiCrawler: true },
handler
};
async function handler(ctx) {
const { fid } = ctx.req.param();
const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 15;
const rootUrl = "https://www.discuss.com.hk";
const $ = load(await rofetch(`${rootUrl}/archiver/?fid-${fid}.html`));
const list = $("li a").toArray().slice(0, limit).map((item) => {
const $item = $(item);
return {
title: $item.text(),
link: `${rootUrl}/${$item.attr("href")}`
};
});
const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
const content = load((await rofetch(item.link)).replaceAll("[img]https://www.discuss.com.hk/images/common/back.gif[/img]", "").replaceAll(/\[url=(.*?)\]/g, "<a href=\"$1\">").replaceAll(/\[(\w+)=(.*?)\]/g, "<span style=\"$1: $2;\">").replaceAll(/\[\/(color|size)\]/g, "</span>").replaceAll("[/url]", "</a>").replaceAll(/\[(\w+)\]/g, "<$1>").replaceAll(/\[\/(\w+)\]/g, "</$1>"));
const cite = content("cite");
const firstAuthorParent = cite.eq(0).parent();
item.author = cite.eq(0).text();
item.description = content(".archiver_post").html();
item.link = `${rootUrl}/viewthread.php?tid=${item.link.match(/tid-(\d+)\.html/)[1]}`;
item.pubDate = timezone(parseDate(firstAuthorParent.text(), "YYYY-M-D hh:mm A"), 8);
return item;
})));
return {
title: `${$("h1 a").text().replace("查看完整版本 : ", "")} - 香港討論區`,
link: `${rootUrl}/forumdisplay.php?fid=${fid}`,
item: items
};
}
//#endregion
export { route };