UNPKG

rsshub

Version:
124 lines (122 loc) 3.4 kB
import "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./render-BQo6B4tL.mjs"; import { i as processWork, r as processCreator, t as baseUrl } from "./utils-BrYAWfDx.mjs"; //#region lib/routes/skeb/index.ts const categoryMap = { new_art_works: "新着作品 (Illust)", new_voice_works: "新着作品 (Voice)", new_novel_works: "新着作品 (Novel)", new_video_works: "新着作品 (Video)", new_music_works: "新着作品 (Music)", new_correction_works: "新着作品 (Advice)", new_comic_works: "新着作品 (Comic)", popular_works: "人気の作品 (Popular)", popular_creators: "人気クリエイター", new_creators: "新着クリエイター" }; const workCategories = new Set([ "new_art_works", "new_voice_works", "new_novel_works", "new_video_works", "new_music_works", "new_correction_works", "new_comic_works", "popular_works" ]); const route = { path: "/:category", categories: ["picture"], example: "/skeb/new_art_works", parameters: { category: "Category, the div id of the section title on the homepage." }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, nsfw: true }, name: "Skeb", maintainers: ["SnowAgar25"], handler, radar: [ { title: "新着作品 (Illust)", source: ["skeb.jp"], target: "/new_art_works" }, { title: "新着作品 (Voice)", source: ["skeb.jp"], target: "/new_voice_works" }, { title: "新着作品 (Novel)", source: ["skeb.jp"], target: "/new_novel_works" }, { title: "新着作品 (Video)", source: ["skeb.jp"], target: "/new_video_works" }, { title: "新着作品 (Music)", source: ["skeb.jp"], target: "/new_music_works" }, { title: "新着作品 (Advice)", source: ["skeb.jp"], target: "/new_correction_works" }, { title: "新着作品 (Comic)", source: ["skeb.jp"], target: "/new_comic_works" }, { title: "人気の作品 (Popular)", source: ["skeb.jp"], target: "/popular_works" }, { title: "人気クリエイター", source: ["skeb.jp"], target: "/popular_creators" }, { title: "新着クリエイター", source: ["skeb.jp"], target: "/new_creators" } ] }; async function handler(ctx) { const category = ctx.req.param("category") || "new_art_works"; if (!(category in categoryMap)) throw new Error("Invalid category"); const url = `${baseUrl}/api`; const apiData = await cache_default.tryGet(url, async () => { return await ofetch_default(url); }, config.cache.routeExpire, false); if (!apiData || typeof apiData !== "object") throw new Error("Invalid data received from API"); const items = await cache_default.tryGet(category, async () => { if (!(category in apiData) || !Array.isArray(apiData[category])) return []; const processItem = workCategories.has(category) ? processWork : processCreator; return await Promise.all(apiData[category].map(async (item) => await processItem(item)).filter(Boolean)); }); return { title: `Skeb - ${categoryMap[category]}`, link: `${baseUrl}/#${category}`, item: items }; } //#endregion export { route };