UNPKG

rsshub

Version:
83 lines (81 loc) 2.5 kB
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs"; import "./types-DNj6Etbg.mjs"; import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as parser } from "./rss-parser-CmTb9lkc.mjs"; import { n as rootUrl, t as parseArticle } from "./utils-DUVgrHXS.mjs"; import pMap from "p-map"; //#region lib/routes/bloomberg/index.ts const siteTitleMapping = { "/": "News", politics: "Politics", business: "Business", markets: "Markets", technology: "Technology", wealth: "Wealth", bview: "Opinion", businessweek: "Businessweek", economics: "Economics", industries: "Industries", crypto: "Crypto" }; const legacySiteMapping = { bpol: "politics", bbiz: "business" }; const route = { path: "/:site?", categories: ["finance"], view: 0, example: "/bloomberg/business", parameters: { site: { description: "Site ID, can be found below", options: Object.entries(siteTitleMapping).map(([key, value]) => ({ value: key, label: value })) } }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Bloomberg Site", maintainers: ["bigfei"], description: `| Site ID | Title | | ------------ | ------------ | | / | News | | politics | Politics | | business | Business | | markets | Markets | | technology | Technology | | wealth | Wealth | | bview | Opinion | | businessweek | Businessweek | | economics | Economics | | industries | Industries | | crypto | Crypto | Legacy site IDs \`bpol\` and \`bbiz\` still work as aliases of \`politics\` and \`business\`.`, handler }; async function handler(ctx) { const site = ctx.req.param("site"); const mappedSite = site ? legacySiteMapping[site] ?? site : void 0; const currentUrl = mappedSite ? `${rootUrl}/${mappedSite}/news.rss` : `${rootUrl}/news.rss`; const feed = await parser.parseString(await rofetch(currentUrl)); const items = await pMap(feed.items.slice(0, ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 50).map((item) => ({ title: item.title, link: item.link, pubDate: item.pubDate ? parseDate(item.pubDate) : void 0, description: item.content })), (item) => parseArticle(item), { concurrency: 1 }); return { title: `Bloomberg - ${siteTitleMapping[mappedSite ?? "/"] ?? feed.title}`, link: feed.link ?? currentUrl, item: items }; } //#endregion export { route };