rsshub
Version:
Make RSS Great Again!
80 lines (78 loc) • 2.78 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import "./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 art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
import path from "node:path";
import { load } from "cheerio";
//#region lib/routes/baidu/tieba/forum.ts
init_esm_shims();
const route = {
path: ["/tieba/forum/good/:kw/:cid?/:sortBy?", "/tieba/forum/:kw/:sortBy?"],
categories: ["bbs"],
example: "/baidu/tieba/forum/good/女图",
parameters: {
kw: "吧名",
cid: "精品分类,默认为 `0`(全部分类),如果不传 `cid` 则获取全部分类",
sortBy: "排序方式:`created`, `replied`。默认为 `created`"
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "精品帖子",
maintainers: ["u3u"],
handler
};
async function handler(ctx) {
const { kw, cid = "0", sortBy = "created" } = ctx.req.param();
const params = { kw: encodeURIComponent(kw) };
ctx.req.path.includes("good") && (params.tab = "good");
cid && (params.cid = cid);
const { data } = await got_default(`https://tieba.baidu.com/f`, {
headers: { Referer: "https://tieba.baidu.com/" },
searchParams: params
});
const $ = load(load(data)("code[id=\"pagelet_html_frs-list/pagelet/thread_list\"]").contents().filter((e) => e.nodeType === "8").prevObject[0].data);
const list = $("#thread_list > .j_thread_list[data-field]").toArray().map((element) => {
const item = $(element);
const { id, author_name } = item.data("field");
const time = sortBy === "created" ? item.find(".is_show_create_time").text().trim() : item.find(".threadlist_reply_date").text().trim();
const title = item.find("a.j_th_tit").text().trim();
const details = item.find(".threadlist_abs").text().trim();
const medias = item.find(".threadlist_media img").toArray().map((element$1) => {
return `<img src="${$(element$1).attr("bpic")}">`;
}).join("");
return {
title,
description: art(path.join(__dirname, "templates/forum-744e0e74.art"), {
details,
medias,
author_name
}),
pubDate: timezone(parseDate(time, [
"HH:mm",
"M-D",
"YYYY-MM"
], true), 8),
link: `https://tieba.baidu.com/p/${id}`
};
});
return {
title: `${kw}吧`,
description: load(data)("meta[name=\"description\"]").attr("content"),
link: `https://tieba.baidu.com/f?kw=${encodeURIComponent(kw)}`,
item: list
};
}
//#endregion
export { route };