merge main

This commit is contained in:
mtvpls
2026-01-08 23:05:50 +08:00
7 changed files with 48 additions and 43 deletions

View File

@@ -175,13 +175,17 @@ export async function GET(request: NextRequest) {
]);
// 分离结果:第一个是 openlist接下来是 emby 结果,最后是 api 结果
const openlistResults = allResults[0];
// 添加安全检查,确保即使某个结果处理出错也不影响其他结果
const openlistResults = Array.isArray(allResults[0]) ? allResults[0] : [];
const embyResultsArray = allResults.slice(1, 1 + embyPromises.length);
const apiResults = allResults.slice(1 + embyPromises.length);
// 合并所有 Emby 结果
const embyResults = embyResultsArray.flat();
let flattenedResults = [...openlistResults, ...embyResults, ...apiResults.flat()];
// 合并所有 Emby 结果,添加安全检查
const embyResults = embyResultsArray.filter(Array.isArray).flat();
const apiResultsFlat = apiResults.filter(Array.isArray).flat();
let flattenedResults = [...openlistResults, ...embyResults, ...apiResultsFlat];
if (!config.SiteConfig.DisableYellowFilter) {
flattenedResults = flattenedResults.filter((result) => {
const typeName = result.type_name || '';
@@ -207,6 +211,7 @@ export async function GET(request: NextRequest) {
}
);
} catch (error) {
console.error('[Search] 搜索结果处理失败:', error);
return NextResponse.json({ error: '搜索失败' }, { status: 500 });
}
}

View File

@@ -124,7 +124,9 @@ export async function GET(request: NextRequest) {
const sourceValue = embySources.length === 1 ? 'emby' : `emby_${embyConfig.key}`;
const sourceName = embySources.length === 1 ? 'Emby' : embyConfig.name;
const results = searchResult.Items.map((item) => ({
// 添加安全检查,确保 Items 存在且是数组
const items = Array.isArray(searchResult?.Items) ? searchResult.Items : [];
const results = items.map((item) => ({
id: item.Id,
source: sourceValue,
source_name: sourceName,
@@ -258,19 +260,21 @@ export async function GET(request: NextRequest) {
.then((openlistResults: any) => {
completedSources++;
if (!streamClosed) {
// 添加安全检查,确保结果是数组
const safeResults = Array.isArray(openlistResults) ? openlistResults : [];
const sourceEvent = `data: ${JSON.stringify({
type: 'source_result',
source: 'openlist',
sourceName: '私人影库',
results: openlistResults,
results: safeResults,
timestamp: Date.now()
})}\n\n`;
if (!safeEnqueue(encoder.encode(sourceEvent))) {
streamClosed = true;
return;
}
if (openlistResults.length > 0) {
allResults.push(...openlistResults);
if (safeResults.length > 0) {
allResults.push(...safeResults);
}
}
})
@@ -303,10 +307,13 @@ export async function GET(request: NextRequest) {
const results = await searchPromise as any[];
// 添加安全检查,确保结果是数组
const safeResults = Array.isArray(results) ? results : [];
// 过滤黄色内容
let filteredResults = results;
let filteredResults = safeResults;
if (!config.SiteConfig.DisableYellowFilter) {
filteredResults = results.filter((result) => {
filteredResults = safeResults.filter((result) => {
const typeName = result.type_name || '';
return !yellowWords.some((word: string) => typeName.includes(word));
});