rsshub
Version:
Make RSS Great Again!
71 lines (69 loc) • 2.23 kB
JavaScript
import "./dist-Bog6z_OM.mjs";
import "./config-MQ-7ebJ_.mjs";
import "./logger-C4avouvV.mjs";
import "./ofetch-DKl_Ma9g.mjs";
import { t as parseDate } from "./parse-date-r5WDWHno.mjs";
import "./is-worker-DESPicPc.mjs";
import { t as cache_default } from "./cache-SV6W5EPy.mjs";
import "./helpers-Bo4JQYdN.mjs";
import { t as got_default } from "./got-CO-ndVl2.mjs";
import { t as renderDescription } from "./description-DBMruKib.mjs";
import { load } from "cheerio";
//#region lib/routes/futunn/main.ts
const route = {
path: ["/main", "/"],
categories: ["finance"],
example: "/futunn/main",
features: { supportRadar: true },
radar: [{
source: ["news.futunn.com/main", "news.futunn.com/:lang/main"],
target: "/main"
}],
name: "要闻",
maintainers: [
"Wsine",
"nczitzk",
"kennyfong19931"
],
handler
};
async function handler(ctx) {
const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 48;
const rootUrl = "https://news.futunn.com";
const currentUrl = `${rootUrl}/main`;
let items = (await got_default({
method: "get",
url: `${rootUrl}/news-site-api/main/get-market-list?size=${limit}`
})).data.data.list.map((item) => ({
title: item.title,
link: item.url.split("?")[0],
author: item.source,
pubDate: parseDate(item.timestamp * 1e3),
description: renderDescription({
abs: item.abstract,
pic: item.pic
})
}));
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
if (/news\.futunn\.com/.test(item.link)) {
const content = load((await got_default({
method: "get",
url: item.link
})).data);
content(".futu-news-time-stamp").remove();
content(".nnstock").each(function() {
content(this).replaceWith(`<a href="${content(this).attr("href")}">${content(this).text().replaceAll("$", "")}</a>`);
});
item.description = content(".origin_content").html();
item.category = [...content(".news__from-topic__title").toArray().map((a) => content(a).text().trim()), ...content("#relatedStockWeb .stock-name").toArray().map((s) => content(s).text().trim())];
}
return item;
})));
return {
title: "富途牛牛 - 要闻",
link: currentUrl,
item: items
};
}
//#endregion
export { route };