UNPKG

rsshub

Version:
51 lines (49 loc) 1.52 kB
import "./config-MQ-7ebJ_.mjs"; import { t as ViewType } from "./types-gOySfSXJ.mjs"; import { t as parseDate } from "./parse-date-r5WDWHno.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-ByDtry1B.mjs"; import { t as rss_parser_default } from "./rss-parser-Cnh4NKwh.mjs"; //#region lib/routes/medium/feed.ts const route = { path: "/feed/:user", categories: ["blog"], view: ViewType.SocialMedia, example: "/medium/feed/zhgchgli", parameters: { user: "Username of the Medium" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["medium.com/@:user"], target: "/feed/:user" }], name: "Medium Feed", maintainers: ["pseudoyu"], handler }; async function handler(ctx) { const user = ctx.req.param("user"); if (!user) throw new invalid_parameter_default("Invalid user"); const feed = await rss_parser_default.parseURL(`https://medium.com/feed/@${user}`); return { title: feed.title ?? "Medium", description: feed.description ?? `${user}'s Medium`, link: feed.link ?? `https://medium.com/@${user}`, 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 };