rsshub
Version:
Make RSS Great Again!
73 lines (72 loc) • 2.43 kB
JavaScript
import { t as config } from "./config-CCmw1BNE.mjs";
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as got_default } from "./got-BTowW50G.mjs";
import { t as timezone } from "./timezone-BBvDwS_3.mjs";
import { load } from "cheerio";
import queryString from "query-string";
//#region lib/routes/saraba1st/thread.ts
const route = {
path: "/thread/:tid",
categories: ["bbs"],
example: "/saraba1st/thread/751272",
parameters: { tid: "帖子 id" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "帖子",
maintainers: ["zengxs"],
handler,
description: "帖子网址如果为 `https://stage1st.com/2b/thread-751272-1-1.html` 那么帖子 id 就是 `751272`。"
};
async function handler(ctx) {
const tid = ctx.req.param("tid");
const cookieString = config.saraba1st.cookie ?? "";
const host = config.saraba1st.host;
const $ = load((await got_default(`${host}/2b/forum.php`, {
searchParams: queryString.stringify({
mod: "viewthread",
tid,
ordertype: 1
}),
headers: { Cookie: cookieString }
})).data);
const title = $("#thread_subject").text();
const list = $("#postlist > div[id^=post_]:not(:first-of-type)");
const staticUrl = new URL("/image/common/none.gif", host);
staticUrl.hostname = `static.${staticUrl.hostname.split(".").slice(-2).join(".")}`;
const resultItems = list.toArray().slice(0, 20).map((post) => {
const each = $(post);
const floor = each.find("td.plc .pi a > em").text();
const floorUrl = each.find("td.plc .pi a").attr("href");
const contentHtml = $(each.find("td.t_f"));
const imgsHtml = contentHtml.find("img");
for (const element of imgsHtml) {
if (element.attribs.src !== staticUrl.href) continue;
element.attribs.src = element.attribs.file;
const imgHtml = $(element);
imgHtml.removeAttr("zoomfile");
imgHtml.removeAttr("file");
imgHtml.removeAttr("onmouseover");
}
contentHtml.find("div.aimg_tip").remove();
return {
title: `${title} #${floor}`,
link: new URL(floorUrl, `${host}/2b/`).href,
description: contentHtml.html(),
author: each.find(".authi .xw1").text(),
pubDate: timezone(parseDate(each.find(".authi em").text()), 8)
};
});
return {
title: `Stage1 论坛 - ${title}`,
link: `${host}/2b/thread-${tid}-1-1.html`,
item: resultItems
};
}
//#endregion
export { route };