rsshub
Version:
Make RSS Great Again!
92 lines (90 loc) • 3.03 kB
JavaScript
import "./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 { t as cache_default } from "./cache-Bo__VnGm.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
//#region lib/routes/wallstreetcn/news.ts
const titles = {
global: "最新",
shares: "股市",
bonds: "债市",
commodities: "商品",
forex: "外汇",
enterprise: "公司",
"asset-manage": "资管",
tmt: "科技",
estate: "地产",
car: "汽车",
medicine: "医药"
};
const route = {
path: "/news/:category?",
categories: ["finance"],
example: "/wallstreetcn/news",
radar: [{ source: ["wallstreetcn.com/news/:category", "wallstreetcn.com/"] }],
name: "资讯",
maintainers: ["nczitzk"],
handler,
description: `| id | 分类 |
| ------------ | ---- |
| global | 最新 |
| shares | 股市 |
| bonds | 债市 |
| commodities | 商品 |
| forex | 外汇 |
| enterprise | 公司 |
| asset-manage | 资管 |
| tmt | 科技 |
| estate | 地产 |
| car | 汽车 |
| medicine | 医药 |`
};
async function handler(ctx) {
const category = ctx.req.param("category") ?? "global";
const rootUrl = "https://wallstreetcn.com";
const apiRootUrl = "https://api-one.wallstcn.com";
const currentUrl = `${rootUrl}/news/${category}`;
let items = (await got_default({
method: "get",
url: `${apiRootUrl}/apiv1/content/information-flow?channel=${category}-channel&accept=article&limit=${ctx.req.query("limit") ?? 25}`
})).data.data.items.filter((item) => item.resource_type !== "ad").map((item) => ({
type: item.resource_type,
guid: item.resource.id,
link: item.resource.uri,
pubDate: parseDate(item.resource.display_time * 1e3)
}));
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const responseData = (await got_default({
method: "get",
url: `${apiRootUrl}/apiv1/content/${item.type === "live" ? `lives/${item.guid}` : `articles/${item.guid}?extract=0`}`
})).data;
if (responseData.code !== 2e4) return null;
const data = responseData.data;
item.title = data.title || data.content_text;
item.author = data.source_name ?? data.author.display_name;
item.description = data.content + (data.content_more ?? "");
item.category = data.asset_tags?.map((t) => t.name) ?? [];
if (data.audio_uri) {
item.enclosure_type = "audio/mpeg";
item.enclosure_url = data.audio_uri;
item.itunes_item_image = data.image?.uri ?? "";
item.itunes_duration = data.audio_info?.duration ?? "";
}
delete item.type;
return item;
})));
items = items.filter((item) => item !== null);
return {
title: `华尔街见闻 - 资讯 - ${titles[category]}`,
link: currentUrl,
item: items,
itunes_author: "华尔街见闻",
image: "https://static.wscn.net/wscn/_static/favicon.png"
};
}
//#endregion
export { route };