rsshub
Version:
Make RSS Great Again!
66 lines (64 loc) • 2.25 kB
JavaScript
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 };