UNPKG

rsshub

Version:
52 lines (50 loc) 1.74 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 invalid_parameter_default } from "./invalid-parameter-ByDtry1B.mjs"; import { t as isValidHost } from "./valid-host-DqbCYAHY.mjs"; import { t as rss_parser_default } from "./rss-parser-Cnh4NKwh.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 };