修复豆瓣推荐截断问题

This commit is contained in:
mtvpls
2025-12-28 01:12:21 +08:00
parent 0cf4db35f9
commit 6bdcc221d1

View File

@@ -1,5 +1,6 @@
import { NextRequest, NextResponse } from 'next/server';
import * as cheerio from 'cheerio';
import { fetchDoubanData } from '@/lib/douban';
export const runtime = 'nodejs';
@@ -10,6 +11,12 @@ interface DoubanRecommendation {
rating: string;
}
interface DoubanDetailApiResponse {
id: string;
title: string;
[key: string]: any;
}
export async function GET(request: NextRequest) {
const { searchParams } = new URL(request.url);
const doubanId = searchParams.get('id');
@@ -84,9 +91,44 @@ export async function GET(request: NextRequest) {
console.log('解析到推荐数:', recommendations.length);
// 处理标题截断问题
const processedRecommendations: DoubanRecommendation[] = [];
for (const rec of recommendations) {
// 检查标题是否被截断(包含三个点)
if (rec.title.includes('...')) {
console.log(`检测到截断标题: ${rec.title}, ID: ${rec.doubanId}`);
try {
// 调用豆瓣详情接口获取完整名称
const detailUrl = `https://m.douban.com/rexxar/api/v2/subject/${rec.doubanId}`;
const detailData = await fetchDoubanData<DoubanDetailApiResponse>(detailUrl);
if (detailData && detailData.title) {
console.log(`成功获取完整标题: ${detailData.title}`);
processedRecommendations.push({
...rec,
title: detailData.title,
});
} else {
console.log(`详情接口未返回标题,移除该视频: ${rec.doubanId}`);
// 补充失败,不添加到结果中
}
} catch (error) {
console.error(`获取完整标题失败,移除该视频: ${rec.doubanId}`, error);
// 补充失败,不添加到结果中
}
} else {
// 标题正常,直接添加
processedRecommendations.push(rec);
}
}
console.log('处理后的推荐数:', processedRecommendations.length);
return NextResponse.json(
{
recommendations,
recommendations: processedRecommendations,
},
{
headers: {