rsshub
Version:
Make RSS Great Again!
98 lines (96 loc) • 2.55 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 "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import queryString from "query-string";
//#region lib/routes/yande/post.ts
const route = {
path: "/post/popular_recent/:period?",
categories: ["picture"],
view: ViewType.Pictures,
example: "/yande/post/popular_recent/1d",
parameters: { period: {
description: "展示时间",
options: [
{
value: "1d",
label: "最近 24 小时"
},
{
value: "1w",
label: "最近一周"
},
{
value: "1m",
label: "最近一月"
},
{
value: "1y",
label: "最近一年"
}
],
default: "1d"
} },
radar: [{ source: ["yande.re/post"] }],
name: "Popular Recent Posts",
maintainers: [
"magic-akari",
"SettingDust",
"fashioncj",
"NekoAria"
],
description: `| 最近 24 小时 | 最近一周 | 最近一月 | 最近一年 |
| ------- | -------- | ------- | -------- |
| 1d | 1w | 1m | 1y |`,
handler,
features: { nsfw: true }
};
async function handler(ctx) {
const { period = "1d" } = ctx.req.param();
const posts = (await got_default({
url: "https://yande.re/post/popular_recent.json",
searchParams: queryString.stringify({ period })
})).data;
const titles = {
"1d": "Last 24 hours",
"1w": "Last week",
"1m": "Last month",
"1y": "Last year"
};
const mime = {
jpg: "jpeg",
png: "png"
};
return {
title: `${titles[period]} - yande.re`,
link: `https://yande.re/post/popular_recent?period=${period}`,
item: posts.map((post) => ({
title: post.tags,
id: `${ctx.path}#${post.id}`,
guid: `${ctx.path}#${post.id}`,
link: `https://yande.re/post/show/${post.id}`,
author: post.author,
pubDate: (/* @__PURE__ */ new Date(post.created_at * 1e3)).toUTCString(),
description: (() => {
const result = [`<img src="${post.sample_url}" />`, `<p>Rating:${post.rating}</p> <p>Score:${post.score}</p>`];
if (post.source) result.push(`<a href="${post.source}">Source</a>`);
if (post.parent_id) result.push(`<a href="https://yande.re/post/show/${post.parent_id}">Parent</a>`);
return result.join("");
})(),
media: {
content: {
url: post.file_url,
type: `image/${mime[post.file_ext]}`
},
thumbnail: { url: post.preview_url }
},
category: post.tags.split(/\s+/)
}))
};
}
//#endregion
export { route };