51 lines
1.8 KiB
TypeScript
51 lines
1.8 KiB
TypeScript
import { Route } from '@/types';
|
|
import { defaultDomain, getRootUrl, ProcessItems } from './utils';
|
|
|
|
export const route: Route = {
|
|
path: '/search/:option?/:category?/:keyword?/:time?/:order?',
|
|
categories: ['anime'],
|
|
example: '/18comic/search/photos/all/NTR',
|
|
parameters: {
|
|
option: '选项,可选 `video` 和 `photos`,默认为 `photos`',
|
|
category: '分类,同上表,默认为 `all` 即全部',
|
|
keyword: '关键字,同上表,默认为空',
|
|
time: '时间范围,同上表,默认为 `a` 即全部',
|
|
order: '排列顺序,同上表,默认为 `mr` 即最新',
|
|
},
|
|
features: {
|
|
requireConfig: false,
|
|
requirePuppeteer: false,
|
|
antiCrawler: true,
|
|
supportBT: false,
|
|
supportPodcast: false,
|
|
supportScihub: false,
|
|
},
|
|
radar: [
|
|
{
|
|
source: ['jmcomic.group/'],
|
|
target: '/:category?/:time?/:order?/:keyword?',
|
|
},
|
|
],
|
|
name: '搜索',
|
|
maintainers: [],
|
|
handler,
|
|
url: 'jmcomic.group/',
|
|
description: `:::tip
|
|
关键字必须超过两个字,这是来自网站的限制。
|
|
:::`,
|
|
};
|
|
|
|
async function handler(ctx) {
|
|
const option = ctx.req.param('option') ?? 'photos';
|
|
const category = ctx.req.param('category') ?? 'all';
|
|
const keyword = ctx.req.param('keyword') ?? '';
|
|
const time = ctx.req.param('time') ?? 'a';
|
|
const order = ctx.req.param('order') ?? 'mr';
|
|
const { domain = defaultDomain } = ctx.req.query();
|
|
const rootUrl = getRootUrl(domain);
|
|
|
|
const currentUrl = `${rootUrl}/search/${option}${category === 'all' ? '' : `/${category}`}${keyword ? `?search_query=${keyword}` : '?'}${time === 'a' ? '' : `&t=${time}`}${order === 'mr' ? '' : `&o=${order}`}`;
|
|
|
|
return await ProcessItems(ctx, currentUrl, rootUrl);
|
|
}
|