rsshub
Version:
Make RSS Great Again!
81 lines (79 loc) • 2.69 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 { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.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 count = [];
for (let i = 0; i < Math.min(list.length, 20); i++) count.push(i);
const staticUrl = new URL("/image/common/none.gif", host);
staticUrl.hostname = `static.${staticUrl.hostname.split(".").slice(-2).join(".")}`;
const resultItems = count.map((i) => {
const each = $(list[i]);
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) {
element.attribs.src = element.attribs.file;
const imgHtml = $(element);
imgHtml.removeAttr("zoomfile");
imgHtml.removeAttr("file");
imgHtml.removeAttr("onmouseover");
imgHtml.removeAttr("onclick");
}
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 };