From cf3176ae9c4d0223bec0e496e2b684259e0b588f Mon Sep 17 00:00:00 2001 From: mtvpls Date: Mon, 27 Apr 2026 15:44:17 +0800 Subject: [PATCH] =?UTF-8?q?uc=E7=BD=91=E7=9B=98=E5=9C=A8=E7=BA=BF=E6=92=AD?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/admin/page.tsx | 130 +++++ src/app/api/admin/netdisk/route.ts | 25 +- src/app/api/netdisk/uc/instant-play/route.ts | 56 ++ src/app/api/netdisk/uc/play/route.ts | 42 ++ src/app/api/netdisk/uc/proxy/route.ts | 144 +++++ src/app/api/source-detail/route.ts | 97 +++- src/app/page.tsx | 23 +- src/app/play/page.tsx | 1 + src/components/PansouSearch.tsx | 8 +- src/lib/admin.types.ts | 6 + src/lib/config.ts | 15 + src/lib/netdisk/source.ts | 10 +- src/lib/netdisk/uc-session-cache.ts | 102 ++++ src/lib/netdisk/uc-session-resolver.ts | 42 ++ src/lib/netdisk/uc.client.ts | 567 +++++++++++++++++++ 15 files changed, 1251 insertions(+), 17 deletions(-) create mode 100644 src/app/api/netdisk/uc/instant-play/route.ts create mode 100644 src/app/api/netdisk/uc/play/route.ts create mode 100644 src/app/api/netdisk/uc/proxy/route.ts create mode 100644 src/lib/netdisk/uc-session-cache.ts create mode 100644 src/lib/netdisk/uc-session-resolver.ts create mode 100644 src/lib/netdisk/uc.client.ts diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 4713dcb..3f616e3 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -3714,6 +3714,10 @@ const NetDiskConfigComponent = ({ const [pan123Enabled, setPan123Enabled] = useState(false); const [pan123Account, setPan123Account] = useState(''); const [pan123Password, setPan123Password] = useState(''); + const [ucEnabled, setUcEnabled] = useState(false); + const [ucCookie, setUcCookie] = useState(''); + const [ucToken, setUcToken] = useState(''); + const [ucSavePath, setUcSavePath] = useState('/'); useEffect(() => { const quark = config?.NetDiskConfig?.Quark; @@ -3731,6 +3735,10 @@ const NetDiskConfigComponent = ({ setPan123Enabled(config?.NetDiskConfig?.Pan123?.Enabled || false); setPan123Account(config?.NetDiskConfig?.Pan123?.Account || ''); setPan123Password(config?.NetDiskConfig?.Pan123?.Password || ''); + setUcEnabled(config?.NetDiskConfig?.UC?.Enabled || false); + setUcCookie(config?.NetDiskConfig?.UC?.Cookie || ''); + setUcToken(config?.NetDiskConfig?.UC?.Token || ''); + setUcSavePath(config?.NetDiskConfig?.UC?.SavePath || '/'); }, [config]); const handleSave = async () => { @@ -3763,6 +3771,12 @@ const NetDiskConfigComponent = ({ Account: pan123Account, Password: pan123Password, }, + UC: { + Enabled: ucEnabled, + Cookie: ucCookie, + Token: ucToken, + SavePath: ucSavePath, + }, }), }); @@ -3918,6 +3932,36 @@ const NetDiskConfigComponent = ({ }); }; + const handleValidateUC = async () => { + await withLoading('validateUCNetDisk', async () => { + try { + const response = await fetch('/api/admin/netdisk', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'validate', + provider: 'uc', + UC: { + Cookie: ucCookie, + Token: ucToken, + SavePath: ucSavePath, + }, + }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.error || '校验失败'); + } + + showSuccess(data.message || 'UC Cookie 可读', showAlert); + } catch (error) { + showError(error instanceof Error ? error.message : '校验失败', showAlert); + throw error; + } + }); + }; + return (
@@ -4256,6 +4300,92 @@ const NetDiskConfigComponent = ({
+
+ + UC网盘 + +
+
+
+

+ 启用UC网盘 +

+

+ 开启后,网盘搜索中的UC网盘资源会显示“立即播放”按钮 +

+
+ +
+ +
+ +