UNPKG

rsshub

Version:
68 lines (66 loc) 2.01 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import path from "node:path"; import { load } from "cheerio"; import xxhash from "xxhash-wasm"; //#region lib/routes/tophub/list.ts init_esm_shims(); const route = { path: "/list/:id", categories: ["new-media"], example: "/tophub/list/Om4ejxvxEN", parameters: { id: "榜单id,可在 URL 中找到" }, features: { requireConfig: [{ name: "TOPHUB_COOKIE", optional: true, description: "" }], requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["tophub.today/n/:id"] }], name: "榜单列表", maintainers: ["akynazh"], handler, description: `::: tip 将榜单条目集合到一个列表中,且有热度排序,可避免推送大量条目。 :::` }; async function handler(ctx) { const { h64ToString } = await xxhash(); const link = `https://tophub.today/n/${ctx.req.param("id")}`; const $ = load(await ofetch_default(link, { headers: { Referer: "https://tophub.today", Cookie: config.tophub?.cookie ?? "" } })); const title = $(".tt h3").text().trim(); const items = $(".rank-all-item:not(.history-content) .jc-c tr").toArray().map((e) => ({ title: $(e).find("td a").text().trim(), link: $(e).find("td a").attr("href"), heatRate: $(e).find("td:nth-child(3)").text().trim() })); const combinedTitles = items.map((item) => item.title).join(""); const renderRank = art(path.join(__dirname, "templates/rank-efbd7200.art"), { items }); return { title, description: $(".tt p").text().trim(), image: $(".ii img").attr("src"), link, item: [{ title, link, description: renderRank, guid: h64ToString(combinedTitles) }] }; } //#endregion export { route };