rsshub
Version:
Make RSS Great Again!
62 lines (60 loc) • 2.08 kB
JavaScript
import "./dist-Bog6z_OM.mjs";
import "./config-MQ-7ebJ_.mjs";
import "./logger-C4avouvV.mjs";
import "./ofetch-DKl_Ma9g.mjs";
import "./parse-date-r5WDWHno.mjs";
import "./is-worker-DESPicPc.mjs";
import { t as cache_default } from "./cache-SV6W5EPy.mjs";
import "./helpers-Bo4JQYdN.mjs";
import "./got-CO-ndVl2.mjs";
import { t as invalid_parameter_default } from "./invalid-parameter-ByDtry1B.mjs";
import { n as getSimple, r as getTorrents, t as getDetails } from "./util-CignLrFj.mjs";
//#region lib/routes/nhentai/index.ts
const supportedKeys = new Set([
"parody",
"character",
"tag",
"artist",
"group",
"language",
"category"
]);
const route = {
path: "/index/:key/:keyword/:mode?",
example: "/nhentai/index/language/chinese",
parameters: {
key: "Filter term, can be: `parody`, `character`, `tag`, `artist`, `group`, `language` or `category`",
keyword: "Filter value",
mode: "mode, `simple` to only show cover, `detail` to show all pages, `torrent` to include Magnet URI, need login, refer to [Route-specific Configurations](https://docs.rsshub.app/deploy/config#route-specific-configurations), default to `simple`"
},
features: {
antiCrawler: true,
supportBT: true,
nsfw: true
},
radar: [{
source: ["nhentai.net/:key/:keyword"],
target: "/index/:key/:keyword"
}],
name: "Filter",
maintainers: ["MegrezZhu", "hoilc"],
handler
};
async function handler(ctx) {
const { key, keyword, mode } = ctx.req.param();
if (!supportedKeys.has(key)) throw new invalid_parameter_default("Unsupported key");
const url = `https://nhentai.net/${key}/${keyword.toLowerCase().replace(" ", "-")}/`;
const simples = await getSimple(url);
const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 5;
let items = simples;
if (mode === "detail") items = await getDetails(cache_default, simples, limit);
else if (mode === "torrent") items = await getTorrents(cache_default, simples, limit);
return {
title: `nhentai - ${key} - ${keyword}`,
link: url,
description: "hentai",
item: items
};
}
//#endregion
export { route };