UNPKG

rsshub

Version:
55 lines (53 loc) 1.73 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./cache-Bo__VnGm.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { a as CDN_HOST, i as API_HOST, o as HOST, r as parseUserData, t as customFetch } from "./utils-CPZdKGMu.mjs"; import path from "node:path"; //#region lib/routes/cara/timeline.ts init_esm_shims(); const route = { path: ["/timeline/:user"], categories: ["social-media"], example: "/cara/timeline/fengz", parameters: { user: "username" }, name: "Timeline", maintainers: ["KarasuShin"], handler, radar: [{ source: ["cara.app/:user", "cara.app/:user/*"], target: "/timeline/:user" }] }; async function handler(ctx) { const user = ctx.req.param("user"); const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit"), 10) : 15; const userInfo = await parseUserData(user); const items = (await customFetch(`${API_HOST}/posts/getAllByUser?slug=${userInfo.slug}&take=${limit}`)).data.map((item) => { const description = art(path.join(__dirname, "templates/post-1d7f2a4f.art"), { content: item.content, images: item.images.filter((i) => !i.isCoverImg).map((i) => ({ ...i, src: `${CDN_HOST}/${i.src}` })) }); return { title: item.title || item.content, pubDate: parseDate(item.createdAt), link: `${HOST}/post/${item.id}`, description }; }); return { title: `Timeline - ${userInfo.name}`, link: `${HOST}/${user}/all`, image: `${CDN_HOST}/${userInfo.photo}`, item: items }; } //#endregion export { route };