merge main
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user