UNPKG

rsshub

Version:
67 lines (65 loc) 2.87 kB
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 { r as getSubPath } from "./common-utils-Cz5bFBus.mjs"; import { t as got_default } from "./got-CO-ndVl2.mjs"; import "./utils-XNu2QX5W.mjs"; import { r as rootUrl, t as ProcessItem } from "./utils-Ds4T2aJ5.mjs"; import { load } from "cheerio"; //#region lib/routes/36kr/index.ts const shortcuts = { "/information": "/information/web_news", "/information/latest": "/information/web_news", "/information/recommend": "/information/web_recommend", "/information/life": "/information/happy_life", "/information/estate": "/information/real_estate", "/information/workplace": "/information/web_zhichang" }; const route = { path: "/:category/:subCategory?/:keyword?", categories: ["new-media"], example: "/36kr/newsflashes", parameters: { category: "分类,必填项", subCategory: "子分类,选填项,目的是为了兼容老逻辑", keyword: "关键词,选填项,仅搜索文章/快讯时有效" }, name: "资讯, 快讯, 用户文章, 主题文章, 专题文章, 搜索文章, 搜索快讯", maintainers: ["nczitzk", "fashioncj"], description: `| 最新资讯频道 | 快讯 | 推荐资讯 | 生活 | 房产 | 职场 | 搜索文章 | 搜索快讯 | | ------- | -------- | -------- | -------- | -------- | --------| -------- | -------- | | news | newsflashes | recommend | life | estate | workplace | search/articles/关键词 | search/articles/关键词 |`, handler }; async function handler(ctx) { const path = getSubPath(ctx).replace(/^\/news(?!flashes)/, "/information").replace(/\/search\/article/, "/search/articles"); const currentUrl = `${rootUrl}${Object.hasOwn(shortcuts, path) ? shortcuts[path] : path}`; const response = await got_default({ method: "get", url: currentUrl }); const $ = load(response.data); let items = JSON.parse(response.data.match(/"itemList":(\[.*?])/)[1]).slice(0, ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 30).filter((item) => item.itemType !== 0).map((item) => { item = item.templateMaterial ?? item; return { title: item.widgetTitle.replaceAll(/<\/?em>/g, ""), author: item.author, pubDate: parseDate(item.publishTime), link: `${rootUrl}/${path === "/newsflashes" ? "newsflashes" : "p"}/${item.itemId}`, description: item.widgetContent ?? item.content }; }); if (!/^\/(search|newsflashes)/.test(path)) items = await Promise.all(items.map((item) => ProcessItem(item, cache_default.tryGet))); return { title: `36氪 - ${$("title").text().split("_")[0]}`, link: currentUrl, item: items }; } //#endregion export { route };