UNPKG

rsshub

Version:
89 lines (86 loc) 2.6 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 cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as rss_parser_default } from "./rss-parser-Dtop7M8f.mjs"; import { load } from "cheerio"; //#region lib/routes/9to5/utils.ts const ProcessFeed = (data) => { const $ = load(data); const content = $("div.post-content"); const cover = $("meta[property=\"og:image\"]"); if (cover.length > 0) $(`<img src=${cover[0].attribs.content}>`).insertBefore(content[0].firstChild); content.find("hr").nextAll().remove(); content.find("hr, ins.adsbygoogle, script").each((i, e) => { $(e).remove(); }); content.find("div.ad-disclaimer-container").remove(); content.find("div").each((i, e) => { if ($(e)[0].attribs.class) { const classes = $(e)[0].attribs.class; if (/\w{10}\s\w{10}/g.test(classes)) $(e).remove(); } }); return content.html(); }; var utils_default = { ProcessFeed }; //#endregion //#region lib/routes/9to5/subsite.ts const route = { path: "/:subsite/:tag?", name: "Unknown", maintainers: [], handler }; async function handler(ctx) { let title = "9To5", link, description; switch (ctx.req.param("subsite")) { case "mac": link = "https://9to5mac.com"; title += "Mac"; description = "Apple News & Mac Rumors Breaking All Day"; break; case "google": link = "https://9to5google.com"; title += "Google"; description = "Google, Pixel news, Android, Home, Chrome OS, apps, more"; break; case "toys": link = "https://9to5toys.com"; title += "Toys"; description = "New Gear, reviews and deals"; break; default: break; } if (ctx.req.param("tag")) { link = `${link}/guides/${ctx.req.param("tag")}/feed/`; title = `${ctx.req.param("tag")} | ${title}`; } else link = `${link}/feed/`; const feed = await rss_parser_default.parseURL(link); const items = await Promise.all(feed.items.splice(0, ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 10).map((item) => cache_default.tryGet(item.link, async () => { const response = await got_default({ method: "get", url: item.link }); const description$1 = utils_default.ProcessFeed(response.data); return { title: item.title, description: description$1, pubDate: item.pubDate, link: item.link, author: item["dc:creator"] }; }))); return { title, link, description, item: items }; } //#endregion export { route };