UNPKG

rsshub

Version:
150 lines (148 loc) 3.91 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import { t as ViewType } from "./types-D84BRIt4.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/zhitongcaijing/index.ts init_esm_shims(); const ids = { recommend: { url: "content/recommend", title: "推荐" }, hkstock: { url: "content/hkstock", title: "港股" }, meigu: { url: "content/meigu", title: "美股" }, agu: { url: "content/agu", title: "沪深" }, ct: { url: "content/ct", title: "创投" }, esg: { url: "content/esg", title: "ESG" }, aqs: { url: "content/aqs", title: "券商" }, ajj: { url: "content/ajj", title: "基金" }, focus: { url: "focus", title: "要闻" }, announcement: { url: "announcement", title: "公告" }, research: { url: "research", title: "研究" }, shares: { url: "shares", title: "新股" }, bazaar: { url: "bazaar", title: "市场" }, company: { url: "company", title: "公司" } }; const route = { path: "/:id?/:category?", categories: ["finance"], view: ViewType.Articles, example: "/zhitongcaijing", parameters: { id: "栏目 id,可在对应栏目页 URL 中找到,默认为 recommend,即推荐", category: "分类 id,可在对应栏目子分类页 URL 中找到,默认为全部" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "推荐", maintainers: ["nczitzk"], handler, description: `| id | 栏目 | | ------------ | ---- | | recommend | 推荐 | | hkstock | 港股 | | meigu | 美股 | | agu | 沪深 | | ct | 创投 | | esg | ESG | | aqs | 券商 | | ajj | 基金 | | focus | 要闻 | | announcement | 公告 | | research | 研究 | | shares | 新股 | | bazaar | 市场 | | company | 公司 |` }; async function handler(ctx) { const id = ctx.req.param("id") ?? "recommend"; const category = ctx.req.param("category") ?? ""; const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 20; const rootUrl = "https://www.zhitongcaijing.com"; const currentUrl = `${rootUrl}/${ids[id].url}.html${category === "" ? "" : `?category_key=${category}`}`; let items = (await got_default({ method: "get", url: `${rootUrl}/${ids[id].url}.html?data_type=1&page=1${category === "" ? "" : `&category_key=${category}`}` })).data.data.slice(0, limit).map((item) => ({ title: item.title, link: `${rootUrl}${item.url}`, description: item.digest, author: item.author_info.author_name, pubDate: parseDate((item.create_time ?? Number.parseInt(item.original_time)) * 1e3), category: [...item.keywords?.split(",") ?? [], item.category_name ?? item.type_tag] })); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const content = load((await got_default({ method: "get", url: item.link })).data); content("#subscribe-vip-box").remove(); content("#news-content").remove(); item.description = art(path.join(__dirname, "templates/description-6a029b99.art"), { digest: content(".digetst-box").html() || content(".telegram-origin-contentn").html(), description: content(".news-body-content").html() }); return item; }))); return { title: `智通财经 - ${ids[id].title}`, link: currentUrl, item: items }; } //#endregion export { route };