diff --git a/src/app/play/page.tsx b/src/app/play/page.tsx
index 4de5e6f..0c6b41a 100644
--- a/src/app/play/page.tsx
+++ b/src/app/play/page.tsx
@@ -55,6 +55,7 @@ import { usePlaySync } from '@/hooks/usePlaySync';
import AIChatPanel from '@/components/AIChatPanel';
import CorrectDialog from '@/components/CorrectDialog';
import DanmakuFilterSettings from '@/components/DanmakuFilterSettings';
+import DetailPanel from '@/components/DetailPanel';
import DoubanComments from '@/components/DoubanComments';
import DownloadEpisodeSelector from '@/components/DownloadEpisodeSelector';
import EpisodeSelector from '@/components/EpisodeSelector';
@@ -128,6 +129,9 @@ function PlayPageClient() {
// 纠错弹窗状态
const [showCorrectDialog, setShowCorrectDialog] = useState(false);
+ // 详情面板状态
+ const [showDetailPanel, setShowDetailPanel] = useState(false);
+
// 检查AI功能是否启用
useEffect(() => {
if (typeof window !== 'undefined') {
@@ -7804,6 +7808,19 @@ function PlayPageClient() {
)}
+ {/* 详情按钮 */}
+ {detail && (
+
+ )}
{/* 纠错按钮 - 仅小雅源显示 */}
{detail && detail.source === 'xiaoya' && (
)}
+
+ {/* 详情面板 */}
+ {detail && (
+ setShowDetailPanel(false)}
+ title={detail.title}
+ poster={detail.poster}
+ doubanId={
+ // 特殊源使用 tmdb,其他使用 cms(通过 doubanId)
+ detail.source === 'openlist' ||
+ detail.source?.startsWith('emby') ||
+ detail.source === 'xiaoya'
+ ? undefined
+ : detail.douban_id
+ }
+ tmdbId={
+ // 特殊源使用 tmdb
+ detail.source === 'openlist' ||
+ detail.source?.startsWith('emby') ||
+ detail.source === 'xiaoya'
+ ? detail.tmdb_id
+ : undefined
+ }
+ type={detail.type_name === '电影' ? 'movie' : 'tv'}
+ cmsData={
+ // 非特殊源使用 cms 数据
+ detail.source !== 'openlist' &&
+ !detail.source?.startsWith('emby') &&
+ detail.source !== 'xiaoya'
+ ? {
+ desc: detail.desc,
+ episodes: detail.episodes,
+ episodes_titles: detail.episodes_titles,
+ }
+ : undefined
+ }
+ sourceId={detail.id}
+ source={detail.source}
+ />
+ )}
);
}