rsshub
Version:
Make RSS Great Again!
150 lines (148 loc) • 3.91 kB
JavaScript
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 };