From a323429bad1419f9d8b75ae6458ed7f94a1e88b6 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Fri, 2 Jan 2026 10:53:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BA=90=E7=AB=99=E5=AF=BB=E7=89=87=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E9=BB=84=E8=89=B2=E8=BF=87=E6=BB=A4=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/source-search/categories/route.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/api/source-search/categories/route.ts b/src/app/api/source-search/categories/route.ts index daf157c..c64d125 100644 --- a/src/app/api/source-search/categories/route.ts +++ b/src/app/api/source-search/categories/route.ts @@ -1,7 +1,8 @@ import { NextRequest, NextResponse } from 'next/server'; import { getAuthInfoFromCookie } from '@/lib/auth'; -import { API_CONFIG, getAvailableApiSites } from '@/lib/config'; +import { API_CONFIG, getAvailableApiSites, getConfig } from '@/lib/config'; +import { yellowWords } from '@/lib/yellow'; export const runtime = 'nodejs'; @@ -32,6 +33,7 @@ export async function GET(request: NextRequest) { } try { + const config = await getConfig(); const apiSites = await getAvailableApiSites(authInfo.username); const targetSite = apiSites.find((site) => site.key === sourceKey); @@ -61,8 +63,17 @@ export async function GET(request: NextRequest) { }); } + // 应用黄色过滤器规则 + let filteredCategories = classData.class; + if (!config.SiteConfig.DisableYellowFilter) { + filteredCategories = classData.class.filter((item) => { + const typeName = item.type_name || ''; + return !yellowWords.some((word: string) => typeName.includes(word)); + }); + } + return NextResponse.json({ - categories: classData.class.map((item) => ({ + categories: filteredCategories.map((item) => ({ id: item.type_id.toString(), name: item.type_name, })),