From 7012a792109d176e5b9cd7efdb4400281e885a4a Mon Sep 17 00:00:00 2001
From: mtvpls
Date: Fri, 22 May 2026 00:24:44 +0800
Subject: [PATCH] =?UTF-8?q?openlist=E7=A6=BB=E7=BA=BF=E4=B8=8B=E8=BD=BD?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A2=9D=E5=A4=96=E6=BA=90=E9=80=89=E6=8B=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/app/admin/page.tsx | 105 +++++++++++++++++++++++++++
src/app/api/acg/download/route.ts | 57 +++------------
src/app/api/admin/openlist/route.ts | 53 +++++++++++++-
src/lib/admin.types.ts | 4 +
src/lib/anime-subscription.ts | 56 +++-----------
src/lib/config.ts | 23 ++++++
src/lib/openlist-offline-download.ts | 82 +++++++++++++++++++++
7 files changed, 286 insertions(+), 94 deletions(-)
create mode 100644 src/lib/openlist-offline-download.ts
diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
index 395c450..39de0e5 100644
--- a/src/app/admin/page.tsx
+++ b/src/app/admin/page.tsx
@@ -3155,6 +3155,11 @@ const OpenListConfigComponent = ({
const [password, setPassword] = useState('');
const [rootPaths, setRootPaths] = useState(['/']);
const [offlineDownloadPath, setOfflineDownloadPath] = useState('/');
+ const [offlineDownloadUseCustomSource, setOfflineDownloadUseCustomSource] =
+ useState(false);
+ const [offlineDownloadUrl, setOfflineDownloadUrl] = useState('');
+ const [offlineDownloadUsername, setOfflineDownloadUsername] = useState('');
+ const [offlineDownloadPassword, setOfflineDownloadPassword] = useState('');
const [scanInterval, setScanInterval] = useState(0);
const [scanMode, setScanMode] = useState<'torrent' | 'name' | 'hybrid'>(
'hybrid'
@@ -3183,6 +3188,16 @@ const OpenListConfigComponent = ({
: ['/'])
);
setOfflineDownloadPath(config.OpenListConfig.OfflineDownloadPath || '/');
+ setOfflineDownloadUseCustomSource(
+ config.OpenListConfig.OfflineDownloadUseCustomSource || false
+ );
+ setOfflineDownloadUrl(config.OpenListConfig.OfflineDownloadURL || '');
+ setOfflineDownloadUsername(
+ config.OpenListConfig.OfflineDownloadUsername || ''
+ );
+ setOfflineDownloadPassword(
+ config.OpenListConfig.OfflineDownloadPassword || ''
+ );
setScanInterval(config.OpenListConfig.ScanInterval || 0);
setScanMode(config.OpenListConfig.ScanMode || 'hybrid');
setDisableVideoPreview(
@@ -3233,6 +3248,10 @@ const OpenListConfigComponent = ({
Password: password,
RootPaths: rootPaths,
OfflineDownloadPath: offlineDownloadPath,
+ OfflineDownloadUseCustomSource: offlineDownloadUseCustomSource,
+ OfflineDownloadURL: offlineDownloadUrl,
+ OfflineDownloadUsername: offlineDownloadUsername,
+ OfflineDownloadPassword: offlineDownloadPassword,
ScanInterval: scanInterval,
ScanMode: scanMode,
DisableVideoPreview: disableVideoPreview,
@@ -3592,6 +3611,92 @@ const OpenListConfigComponent = ({
+
+
+
+
+ 离线下载使用独立 OpenList 源
+
+
+ 开启后,存到私人影库和追番订阅会把任务提交到下方 OpenList,扫描和播放仍使用上方主 OpenList
+
+
+
+
+
+ {offlineDownloadUseCustomSource && (
+
+
+
+ setOfflineDownloadUrl(e.target.value)}
+ disabled={!enabled}
+ placeholder='https://download-openlist-server.com'
+ className='w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:opacity-50 disabled:cursor-not-allowed'
+ />
+
+
+
+
+ )}
+
+