From 90c10137e99540f1cb801739595cfca3b3a2fe3c Mon Sep 17 00:00:00 2001 From: truewhile <62226914+truewhile@users.noreply.github.com> Date: Mon, 24 Aug 2026 21:25:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化 --- web/src/pages/HomePage.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/web/src/pages/HomePage.tsx b/web/src/pages/HomePage.tsx index f5f0d92..730b13e 100644 --- a/web/src/pages/HomePage.tsx +++ b/web/src/pages/HomePage.tsx @@ -59,8 +59,26 @@ export function HomePage() { }) // Fetch media items for all libraries in parallel + const isSeriesType = (type?: string) => type === 'tv' || type === 'anime' || type === 'variety' const results = await Promise.allSettled( libs.map(async (lib) => { + // 剧集类媒体库(tv/anime/variety):后端 /series 已按剧聚合, + // 首页若用 episode 级 /media 的前 30 行再 groupSeries,同一部剧的 + // 多集会折叠成 1 张卡,导致整行只显示 1 个条目。 + // 改用 /series 分页拉取全部聚合后的剧集卡片。 + if (isSeriesType(lib.type)) { + const cards: SeriesCard[] = [] + let total = 0 + const pageSize = 200 + for (let page = 1; page <= 10; page++) { + const data = await libraryAPI.listSeries(lib.id, page, pageSize) + const pageItems = asArray(data?.items) + cards.push(...pageItems) + total = data?.total ?? cards.length + if (cards.length >= total || pageItems.length < pageSize) break + } + return { id: lib.id, cards, items: [], total } + } const page = await libraryAPI.listMedia(lib.id, 1, 30) const items = asArray(page?.items) const cards = groupSeries(items)