rsshub
Version:
Make RSS Great Again!
39 lines (38 loc) • 1.47 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
//#region lib/routes/xuangubao/subject.ts
const route = {
path: "/subject/:subject_id",
categories: ["finance"],
example: "/xuangubao/subject/41",
parameters: { subject_id: "主题 id,网址 https://xuangubao.cn/subject/41 中最后的数字" },
name: "主题",
maintainers: ["hillerliao"],
handler
};
async function handler(ctx) {
const { subject_id } = ctx.req.param();
const link = `https://xuangubao.cn/subject/${subject_id}`;
const response = await rofetch(`https://api.xuangubao.cn/api/pc/subj/${subject_id}?limit=20`, { headers: { Referer: link } });
const subject = response.Subject;
const out = await Promise.all(response.Messages.map((item) => cache_default.tryGet(item.Url, async () => {
const detail = await rofetch(`https://baoer-api-prod.xuangubao.cn/baoer_backend/api/messages/show/v2/${item.Id}?subjectId=${subject_id}`, { headers: { Referer: `https://m.xuangubao.cn/subject/${subject_id}` } });
return {
title: item.Title,
link: item.Url || item.ShareUrl2,
pubDate: parseDate(item.CreatedAt, "X"),
description: detail.Content || item.Summary,
image: item.PcImage
};
})));
return {
title: `${subject.Title} - 主题 - 选股宝`,
link,
description: subject.Desc,
image: subject.Image,
item: out
};
}
//#endregion
export { route };