UNPKG

rsshub

Version:
98 lines (96 loc) 2.55 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 "./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 };