UNPKG

rsshub

Version:
53 lines (51 loc) 1.77 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import { t as ViewType } from "./types-D84BRIt4.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-rr4AgGpp.mjs"; import { t as isValidHost } from "./valid-host-C-u5eW3j.mjs"; import { t as rss_parser_default } from "./rss-parser-Dtop7M8f.mjs"; //#region lib/routes/substack/subscribe.ts const route = { path: "/subscribe/:user", categories: ["blog"], view: ViewType.SocialMedia, example: "/substack/subscribe/mangoread", parameters: { user: "Username of the Substack" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Substack Subscription", maintainers: ["pseudoyu"], handler }; async function handler(ctx) { const user = ctx.req.param("user"); if (!isValidHost(user)) throw new invalid_parameter_default("Invalid user"); const response = await ofetch_default(`https://${user}.substack.com/feed`); const feed = await rss_parser_default.parseString(response); return { title: feed.title ?? "Substack", description: feed.description ?? `${user}'s Substack`, link: feed.link ?? `https://${user}.substack.com`, image: feed.image?.url ?? "", item: feed.items.map((item) => ({ title: item.title ?? "Untitled", description: item["content:encoded"] ?? item.content ?? "", link: item.link ?? "", pubDate: item.pubDate ? parseDate(item.pubDate) : void 0, guid: item.guid ?? "", author: item.creator ?? user })) }; } //#endregion export { route };