UNPKG

rsshub

Version:
55 lines (53 loc) 1.58 kB
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 "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { load } from "cheerio"; //#region lib/routes/finviz/quote.ts const route = { path: "/news/:ticker", categories: ["finance"], example: "/finviz/news/AAPL", parameters: { ticker: "The stock ticker" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "US Stock News", maintainers: ["HenryQW"], handler }; async function handler(ctx) { const link = `https://finviz.com/quote.ashx?t=${ctx.req.param("ticker")}`; const $ = load((await got_default(link)).body); const data = $("table.fullview-news-outer tr"); let dateRow = ""; const item = await Promise.all(data.toArray().map((e) => { let date = $(e).find("td").first().text().trim(); if (date.includes("-")) dateRow = date.split(" ")[0]; else date = `${dateRow} ${date}`; return { title: $(e).find("a").text(), pubDate: parseDate(date, "MMM-DD-YY HH:mmA"), author: $(e).find("span").text(), link: $(e).find("a").attr("href") }; })); const name = $(".fullview-title b").text(); return { title: `${ctx.req.param("ticker")} ${name} News by Finviz`, link, description: `A collection of ${name} news aggregated by Finviz.`, item }; } //#endregion export { route };