UNPKG

rsshub

Version:
105 lines (101 loc) 3.24 kB
import { Data, Route } from '@/types'; import { TITLE, HOST } from './const'; import { fetchActivityList, fetchPerformerList, fetchSiteList, fetchBrandList, fetchCityList, fetchStyleList } from './service'; import type { Context } from 'hono'; export const route: Route = { path: '/search/:type/:keyword?', categories: ['shopping'], example: '/showstart/search/live', parameters: { keyword: '搜索关键词', type: { description: '类别', options: [ { value: 'event', label: '演出', }, { value: 'artist', label: '音乐人', }, { value: 'site', label: '场地', }, { value: 'brand', label: '厂牌', }, { value: 'city', label: '城市', }, { value: 'style', label: '风格', }, ], }, }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, name: '演出搜索', maintainers: ['lchtao26'], handler, }; async function handler(ctx: Context): Promise<Data> { const type = ctx.req.param('type') || ''; const keyword = ctx.req.param('keyword') || ''; switch (type) { case 'event': return { title: `${TITLE} - 搜演出 - ${keyword || '全部'}`, link: HOST, item: await fetchActivityList({ keyword }), }; case 'artist': return { title: `${TITLE} - 搜艺人 - ${keyword || '全部'}`, link: HOST, item: await fetchPerformerList({ searchKeyword: keyword }), }; case 'site': return { title: `${TITLE} - 搜场地 - ${keyword || '全部'}`, link: HOST, item: await fetchSiteList({ searchKeyword: keyword }), }; case 'brand': return { title: `${TITLE} - 搜厂牌 - ${keyword || '全部'}`, link: HOST, item: await fetchBrandList({ searchKeyword: keyword }), }; case 'city': return { title: `${TITLE} - 搜城市 - ${keyword || '全部'}`, link: HOST, item: await fetchCityList(keyword), }; case 'style': return { title: `${TITLE} - 搜风格 - ${keyword || '全部'}`, link: HOST, item: await fetchStyleList(keyword), }; default: return { title: `${TITLE} - 搜演出 - ${type || '全部'}`, link: HOST, allowEmpty: true, item: await fetchActivityList({ keyword: type }), }; } }