UNPKG

rsshub

Version:
63 lines (62 loc) 1.85 kB
import "./types-DNj6Etbg.mjs"; import { t as parseDate } from "./parse-date-3kcy2Eau.mjs"; import { t as cache_default } from "./cache-C1Y-9qDV.mjs"; import { t as got_default } from "./got-DUpa1V3-.mjs"; import { t as timezone } from "./timezone-UiMFOuvL.mjs"; import { load } from "cheerio"; //#region lib/routes/gamer/hot.ts const route = { path: "/hot/:bsn", categories: ["anime"], view: 0, example: "/gamer/hot/47157", parameters: { bsn: "板塊 id,在 URL 可以找到" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "本板推薦", maintainers: [ "nczitzk", "TonyRL", "kennyfong19931" ], handler }; async function handler(ctx) { const rootUrl = `https://forum.gamer.com.tw/B.php?bsn=${ctx.req.param("bsn")}`; const response = await got_default(rootUrl); const $ = load(response.data); const list = $("div.popular__card-list div.popular__card-img a").toArray().map((item) => { return { link: $(item).attr("href"), title: "" }; }); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const detailResponse = await got_default({ url: item.link, headers: { Referer: rootUrl } }); const content = load(detailResponse.data); content("div.c-post__body__buttonbar").remove(); item.title = content(".c-post__header__title").text(); item.description = content("div.c-post__body").html(); item.author = `${content("a.username").eq(0).text()} (${content("a.userid").eq(0).text()})`; item.pubDate = timezone(parseDate(content("a.edittime").eq(0).attr("data-mtime")), 8); return item; }))); const ret = { title: $("title").text(), link: rootUrl, item: items }; ctx.set("json", ret); return ret; } //#endregion export { route };