From f2b4c404c36595c10c95c8965d00f2fea5b677f2 Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 10 Mar 2026 20:50:44 +0800 Subject: [PATCH] fix: filter out ad/live/invalid cards from recommend feed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 推荐流中混入广告、直播等特殊条目,缺少 pic/duration/bvid 字段, 导致页面出现空白卡片。过滤掉不满足条件的条目。 --- services/bilibili.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/bilibili.ts b/services/bilibili.ts index f53d3a6..7922d1f 100644 --- a/services/bilibili.ts +++ b/services/bilibili.ts @@ -76,12 +76,14 @@ export async function getRecommendFeed(freshIdx = 0): Promise { ); const res = await api.get('/x/web-interface/wbi/index/top/feed/rcmd', { params: signed }); const items: any[] = res.data.data?.item ?? []; - return items.map(item => ({ - ...item, - aid: item.id ?? item.aid, - pic: item.pic ?? item.cover, - owner: item.owner ?? { mid: 0, name: item.owner_info?.name ?? '', face: item.owner_info?.face ?? '' }, - })) as VideoItem[]; + return items + .map(item => ({ + ...item, + aid: item.id ?? item.aid, + pic: item.pic ?? item.cover, + owner: item.owner ?? { mid: 0, name: item.owner_info?.name ?? '', face: item.owner_info?.face ?? '' }, + })) + .filter((item: any) => item.bvid && (item.pic || item.cover) && item.duration > 0) as VideoItem[]; } export async function getPopularVideos(pn = 1): Promise {