UNPKG

rsshub

Version:
80 lines (78 loc) 2.78 kB
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 };