UNPKG

rsshub

Version:
50 lines (48 loc) 1.79 kB
import "./dist-Bog6z_OM.mjs"; import "./config-MQ-7ebJ_.mjs"; import { t as ViewType } from "./types-gOySfSXJ.mjs"; import "./logger-C4avouvV.mjs"; import { t as ofetch_default } from "./ofetch-DKl_Ma9g.mjs"; import { t as parseDate } from "./parse-date-r5WDWHno.mjs"; import { t as timezone } from "./timezone-CA9Huotp.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-ByDtry1B.mjs"; import { t as isValidHost } from "./valid-host-DqbCYAHY.mjs"; import { load } from "cheerio"; import markdownit from "markdown-it"; //#region lib/routes/hedwig/posts.ts const md = markdownit({ html: true }); const route = { path: "/posts/:site", categories: ["blog"], example: "/posts/walnut", parameters: { site: "站点名,原则上只要是 `{site}.hedwig.pub` 都可以匹配" }, features: { supportRadar: false }, name: "Posts", url: "hedwig.pub", maintainers: ["zwithz", "GetToSet"], view: ViewType.Articles, handler: async (ctx) => { const { site } = ctx.req.param(); if (!isValidHost(site)) throw new invalid_parameter_default("Invalid site"); const baseUrl = `https://${site}.hedwig.pub`; const text = load(await ofetch_default(baseUrl))("script#__NEXT_DATA__").text(); const pageProps = JSON.parse(text).props.pageProps; const list = pageProps.issuesByNewsletter.map((item) => { const description = item.blocks.reduce((desc, block) => desc + md.render(block.markdown.text), ""); return { title: item.subject, description, pubDate: timezone(parseDate(item.publishAt, "YYYY-MM-DDTHH:mm:ss.SSS[Z]"), 0), link: `${baseUrl}/i/${item.urlFriendlyName}` }; }); return { title: pageProps.newsletter.name, description: pageProps.newsletter.about, link: baseUrl, item: list }; } }; //#endregion export { route };