UNPKG

rsshub

Version:
66 lines (64 loc) 2.25 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 "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-rr4AgGpp.mjs"; import "./config-not-found-Dyp3RlZZ.mjs"; import { a as postFilter, i as parsePost, r as getClient, t as CONFIG_OPTIONS } from "./utils-k6GIPexf.mjs"; //#region lib/routes/mixi2/user.ts const handler = async (ctx) => { const limit = Number.parseInt(ctx.req.query("limit") ?? "20", 10); const name = ctx.req.param("name"); const mediaOnly = ctx.req.param("media") === "media"; if (!name.startsWith("@")) throw new invalid_parameter_default("ユーザー名は@で始まる必要があります"); const client = getClient(); const persona = (await client.getPersonaByName({ name: name.slice(1) })).persona; const data = await client.getPersonalTimeline({ personaId: persona?.personaId, limit, mediaOnly }); return { title: `${persona?.name} - ${mediaOnly ? "メディア" : "ポスト"}`, image: persona?.avatarUrl, item: data?.posts?.filter(postFilter).map((post) => ({ title: `@${persona?.name}`, description: parsePost(post), pubDate: parseDate(post.createdAt.seconds * 1e3), guid: post.postId, author: persona?.name, link: `https://mixi.social/@${persona?.name}/posts/${post.postId}` })) ?? [] }; }; const route = { path: "/user/:name/:media?", name: "ユーザー", categories: ["social-media"], example: "/mixi2/user/@deyo", parameters: { name: { description: "@で始まるユーザー名" }, media: { description: "`media`を入力するとメディアを含むポストのみを取得、デフォルトは空で全てのポストを取得" } }, features: { requireConfig: CONFIG_OPTIONS, supportRadar: true }, radar: [{ source: ["mixi.social/:id"], target: "/user/:id", title: "ユーザー - ポスト" }, { source: ["mixi.social/:id"], target: "/user/:id/media", title: "ユーザー - メディア" }], view: ViewType.SocialMedia, handler, maintainers: ["KarasuShin"] }; //#endregion export { route };