From ac0d94bd009265c6b2e721947e49fd4096a5d870 Mon Sep 17 00:00:00 2001 From: liRQ <813144884@qq.com> Date: Sat, 27 Jun 2026 15:22:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(openlist):=20=E9=9B=86=E6=88=90OpenList?= =?UTF-8?q?=E5=A4=9A=E7=BD=91=E7=9B=98=E8=81=9A=E5=90=88=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=B8=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增OpenList集成模块,支持80+种网盘接入,添加创建关联网盘、文件同步、获取播放链接等接口,更新API文档完善相关说明 --- .../common/dal/dataobject/DriveDO.class | Bin 3811 -> 3811 bytes .../dal/repository/DriveRepository.class | Bin 11097 -> 11273 bytes .../com/wangpan/common/entity/Drive.class | Bin 4936 -> 5035 bytes .../wangpan/common/util/OpenListClient.class | Bin 6813 -> 6829 bytes .../resources/META-INF/resources/api-doc.html | 369 ++++++++++++++++++ .../classes/META-INF/resources/api-doc.html | 369 ++++++++++++++++++ 6 files changed, 738 insertions(+) diff --git a/wangpan-common/target/classes/com/wangpan/common/dal/dataobject/DriveDO.class b/wangpan-common/target/classes/com/wangpan/common/dal/dataobject/DriveDO.class index 23f4241b10045ff482f6f1039c069470f338b7a8..e69fd50e2bc8586ab379200d32093eb632802efc 100644 GIT binary patch literal 3811 zcma);`BU3Q6vv-9OaO%tu7rdnJ<^sViPEN5j?z*)P!oeGJ`!?K*9Ze#dIPtzjl?yPeRoQ$4H9K=}rI4McC-K)ZD& zvwWirZMIsel#2#sI@nPjkOQ9Gf|rRd)>0HWl6JHq!g}De8PK31*Khijz%}Ti-xi+h zgi$H-1G@>FuCWatTimjveS=2#e77NjERPs8*|kL8i$qfd;2GX?T#;xDM~H@7a^3+b zgSbW=gk_}DMg~P0QA7M<9~?rf;MZ+8mrTLa-7^J3#&6XTE{8A^`!;BBv-os=0gKfG zkuEj>H0;(olV9m_6$b1!zgc>`UB<&B$8(}(gZk$es)%*gZ-^1ZPJ1Ijp&Y3jB#$zzg zFKZV}y3E>B(0)(hv|U=_Y`107tZJ7k#Qdw>Z7_W*CdZAyo+>6?p{wz}PMOSf$L83A zgJWVdsJXa**u`^`=GcXaO{5dCUirAUSnst-*EnsgmrlgFEy=!PrJ70Cd1sv4coZid zR;+Y2R3wDsg$TdDN#{Uq8_9~Ql&)F zq(ok%L~N6#Mj;vNqmVwvLWor|!3;d{iJ(vEGx#z1?7@8z9xO-$a&Yl4TKZkOyp4NC z4$jaWJe#osRPW-=pwHOr9bJOy7Zc~o{2S* zr5P&@?KiL+M7ALe`c}(xU**Ybc^>L{?yEfOJ$N{u1|>X`lIIcrkh~wCWtFF(<@teD zbn#hMc{Y0Ra9yQ5Qv^&&&sGl}uJ4p*M)Is`dDc{(Z7ok;&$FiT zlzQ-RpQSvPB+t5*=ZVTw(eiBQd7h{|)gC@^NY5AY?Y^><*DoI$5wen4<7z5 zr99UqPlE)8)cV;|d74_DeR6d5v#0Xx_uz@YkIDIbL-HJGc@9;c11(QW&vU5q9QNRe eKg$WvP4M)QC-1)ezc7wSwK4W zuWie-{kFB!JP@tept0Mo@5Xlx8d)ke#_1@H7iq$zNiq#8wStcI2G(8MxA5Kxe9N&t z{9-$h{?>Zvz832{1{GWf>sLMms04m{l@~l_(s5pGtQU!}?C{hHlV)hvpd-HB5eCiV z+^TWtrj92~nrEv?M?|gA?Z$54v-d|PE%1EN3)(?F^my)!NsBypBIpX=bECK#2cg{- zNxY9uIya!*3VMFLYsdTSd%>iO^a6&+|H*aU1sa?m#!zI zEw8a;Qi(S?9tW}QRo!=jXID(R%5le{*p7P6Ub9g(96V(iaBJ$-{O7t13d*_S|=N)5BuZIA#nRB8+fg_42ww#->42 zYk?08KW^AwPmCfz_|HJ_J?s~e8*b!cfqTA>E$~@K23@Og3N-DY<2pgl>bz}26Lq~_ zWZ9XWRpY>AXB8hbe%l4Y)kC?Jof@p!>t4Nv6uNOJFBxpZ6&}YMOHR?C(e0gwOC>CY zui_bG9cn4L$_5;GrSf+5{$33$tOX9XaJ=IBV!PLAicm)6EaflLuyMH9ZaR4+-gj|M zD>B}pN(He-+afNbTxOO^xg?VX17(ybXO~o6sezBXCF1?S*|kGdPK-~Cl*4LuSz369 zbN{`F`E6NWa|3bG3Pb(CI59YxkCo~<+A%D#{-O9V0hfV^30PE;GDJ>8n+@im*-?uT zNedg@bj~^}&Oz(kG;?j_i}mEd4*TVr@D3Qx=Xct-ZW3KSvp){7~s#+ZS5@wKcWB<}g~L^bGzEy0@raN4J@ zbIUkvdB_y!1mTo@&0WKwqi?z|9ParDX!qh^PeeU0-m<$R+)U^KI$Qzrb2>(+=}YcG;Ar+ils#J zl@je%O7z$?)FkBh_}z=>2LwVVO%=?*iZwy&bf3=P6_+HQ8(6`DG$2Qp|0d%Px#R;p zSxvZ=e#Dda0s|`3CZs_>Q3cOI=Rc|VJCp_b;Jl%A-lA<-vGcc(1<0}GmA|N{hJGNu z=M#%GG-D-4y92*bTx1Xi?P__ZRGzYy=Vv|7l*+R?gonSUK`GC1$+JgQ&G}5LJQXcZ zjq1AdnO1qWhVXD+Wjr&Ir=jJUQ+al@JP-9eb1Kj75FXC&jAvf*Jks)3J@x zJTHdua39WiE=wLq+kdX8Jhqlc==;wVm8Us`hwp=orzCk^YV&7V<#Dt;ZGHYMt2|-| z58q1}&sE8@PcEj^{JEy`w6#13^h%dM*HoVUAw0?bnD%E&@_1UFn<~$NmZziVxvBEJ h8p4xY%PG$-@D#|G&p`gaFpZPyV(zzyLW-VH{69gtet-Y~ diff --git a/wangpan-common/target/classes/com/wangpan/common/dal/repository/DriveRepository.class b/wangpan-common/target/classes/com/wangpan/common/dal/repository/DriveRepository.class index 468b0fc1c7c899e43a2249e9e32475006e8dc01c..e4eec7de2457051281d764d292cecec6d1961a4b 100644 GIT binary patch literal 11273 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 literal 11097 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 diff --git a/wangpan-common/target/classes/com/wangpan/common/entity/Drive.class b/wangpan-common/target/classes/com/wangpan/common/entity/Drive.class index 3a929361aa51583c1ccc1c461f7874f2ccdada0e..c0e8edd1ff8d431d0cf96479bec6e5ee2c71486b 100644 GIT binary patch literal 5035 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 literal 4936 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 literal 6813 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 diff --git a/wangpan-gateway/src/main/resources/META-INF/resources/api-doc.html b/wangpan-gateway/src/main/resources/META-INF/resources/api-doc.html index 76cabd7..0bb6822 100644 --- a/wangpan-gateway/src/main/resources/META-INF/resources/api-doc.html +++ b/wangpan-gateway/src/main/resources/META-INF/resources/api-doc.html @@ -300,6 +300,7 @@ + @@ -339,6 +340,17 @@
TMDB:8083
+
+ + + + +
Drive:8082
+ +
OpenList:13000
+ +
各网盘
+
@@ -350,6 +362,8 @@ /api/users/**user-service用户管理 /api/profile/**user-service个人资料 /api/drive/**drive-service网盘管理 + /api/drive/**/sync-filesdrive-serviceOpenList 文件同步 + /api/drive/**/play-urldrive-serviceOpenList 播放链接 /api/icon/**drive-serviceIcon管理 /api/movies/**tmdb-service电影管理 /api/tmdb/**, /api/tmdb-scraper/**tmdb-serviceTMDB刮削 @@ -3480,6 +3494,361 @@
+ +
+
+

OpenList 多网盘聚合服务

+ wangpan-drive-service : 8082 · 依赖 OpenList 服务 (http://ldfun.asia:13000) +
+ +
+

功能说明

+

+ OpenList 集成模块将 OpenList 作为多网盘聚合后端,支持 80+ 种网盘服务(阿里云盘、百度网盘、UC网盘、OneDrive 等)。 + Java 服务负责业务逻辑(用户、权限、TMDB 刮削),OpenList 负责文件操作(上传、下载、预览)。 +

+
+
+
前端
+ +
Gateway:8888
+ +
Drive:8082
+ +
OpenList:13000
+ +
各网盘
+
+
+
+ +
+

前置配置

+

+ 1. 在 OpenList 管理后台 (http://ldfun.asia:13000/@manage) 添加网盘存储
+ 2. 记录存储的 挂载路径(如 /uc)和 存储 ID(通过 API 获取)
+ 3. 在 application.yml 中配置 OpenList 服务地址和账号密码
+ 4. 创建网盘时传入 openlistStorageIdopenlistMountPath 关联 OpenList 存储 +

+
+ + +
+
+ POST + /api/drive + 创建网盘(关联 OpenList 存储) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token> +Content-Type: application/json
+
+
+

请求体

+
{ + "name": "UC网盘电影库", + "description": "UC网盘存储", + "openlistStorageId": "1", + "openlistMountPath": "/uc" +}
+
+
+

字段说明

+ + + + + + +
字段类型必填说明
nameString网盘名称
descriptionString网盘描述
openlistStorageIdStringOpenList 存储 ID(不传则仅记录元数据)
openlistMountPathStringOpenList 挂载路径(如 "/uc")
+
+
+

成功响应示例

+
{ + "code": 200, + "message": "创建成功", + "data": { + "id": 1, + "name": "UC网盘电影库", + "description": "UC网盘存储", + "openlistStorageId": "1", + "openlistMountPath": "/uc", + "folderCount": 0, + "fileCount": 0, + "totalSize": 0, + "status": "active", + "createTime": "2026-06-26T15:00:00", + "updateTime": "2026-06-26T15:00:00" + } +}
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "创建网盘失败:网盘名称不能为空", + "data": null +}
+
+
+
+ + +
+
+ POST + /api/drive/{driveId}/folders/{folderId}/sync-files + 从 OpenList 同步文件夹文件 + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
folderIdLong文件夹 ID(0 表示根目录)
+
+
+

功能说明

+

+ 调用 OpenList API 获取指定路径下的文件列表,自动创建数据库中缺失的电影记录。 + 已存在的文件不会重复创建。同步后文件可进行 TMDB 刮削。 +

+
+
+

成功响应示例

+
{ + "code": 200, + "message": "同步成功", + "data": { + "syncCount": 5, + "totalFiles": 10 + } +}
+
+
+

响应字段说明

+ + + + +
字段说明
syncCount本次新增的电影记录数量
totalFilesOpenList 中该路径下的文件总数
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "同步失败:网盘未关联 OpenList 存储", + "data": null +}
+
+
+
+ + +
+
+ GET + /api/drive/{driveId}/movies/{movieId}/play-url + 获取电影真实播放链接 + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
movieIdLong电影 ID
+
+
+

功能说明

+

+ 调用 OpenList API 获取文件的真实下载地址,返回的 URL 可直接用于视频播放器播放。 + 仅支持 storageTypeopenlist 的电影记录。 +

+
+
+

成功响应示例

+
{ + "code": 200, + "message": "获取成功", + "data": { + "playUrl": "https://uc网盘真实下载地址/xxx.mp4", + "fileName": "阿凡达.mp4", + "fileSize": 1073741824 + } +}
+
+
+

响应字段说明

+ + + + + +
字段说明
playUrl真实播放/下载地址,可直接用于视频播放器
fileName文件名
fileSize文件大小(字节)
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "获取失败:该电影不是 OpenList 管理的文件", + "data": null +}
+
+
+
+ + +
+
+ GET + /api/drive + 查看网盘列表(含 OpenList 信息) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

成功响应示例

+
{ + "code": 200, + "data": [ + { + "id": 1, + "name": "UC网盘电影库", + "openlistStorageId": "1", + "openlistMountPath": "/uc", + "folderCount": 2, + "fileCount": 10, + "totalSize": 10737418240, + "status": "active" + } + ] +}
+
+
+

新增字段说明

+ + + + +
字段说明
openlistStorageId关联的 OpenList 存储 ID(null 表示未关联)
openlistMountPathOpenList 挂载路径(如 "/uc")
+
+
+
+ + +
+
+ GET + /api/drive/{driveId}/folders/{folderId}/movies + 查看电影列表(含 OpenList 信息) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
folderIdLong文件夹 ID(0 表示根目录)
+
+
+

成功响应示例

+
{ + "code": 200, + "data": { + "list": [ + { + "id": 1, + "title": "阿凡达.mp4", + "openlistFilePath": "/uc/阿凡达.mp4", + "storageType": "openlist", + "fileSize": 1073741824, + "mimeType": "video/mp4" + } + ], + "total": 10, + "page": 1, + "pageSize": 20 + } +}
+
+
+

新增字段说明

+ + + + + +
字段说明
openlistFilePathOpenList 文件路径(如 "/uc/阿凡达.mp4")
storageType存储类型:metadata(仅元数据)/ openlist(OpenList 管理)
fileSize文件大小(字节)
+
+
+
+ + +
+

前端调用示例

+
+

创建网盘

+
const response = await fetch('/api/drive', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + name: 'UC网盘电影库', + openlistStorageId: '1', + openlistMountPath: '/uc' + }) +});
+
+
+

同步文件

+
const response = await fetch(`/api/drive/${driveId}/folders/${folderId}/sync-files`, { + method: 'POST', + headers: { 'Authorization': `Bearer ${token}` } +}); +const data = await response.json(); +console.log(`同步了 ${data.data.syncCount} 个文件`);
+
+
+

播放视频

+
const response = await fetch(`/api/drive/${driveId}/movies/${movieId}/play-url`, { + headers: { 'Authorization': `Bearer ${token}` } +}); +const data = await response.json(); +videoPlayer.src = data.data.playUrl; // 直接设置视频源 +videoPlayer.play();
+
+
+
+
diff --git a/wangpan-gateway/target/classes/META-INF/resources/api-doc.html b/wangpan-gateway/target/classes/META-INF/resources/api-doc.html index 76cabd7..0bb6822 100644 --- a/wangpan-gateway/target/classes/META-INF/resources/api-doc.html +++ b/wangpan-gateway/target/classes/META-INF/resources/api-doc.html @@ -300,6 +300,7 @@ +
@@ -339,6 +340,17 @@
TMDB:8083
+
+ + + + +
Drive:8082
+ +
OpenList:13000
+ +
各网盘
+
@@ -350,6 +362,8 @@ /api/users/**user-service用户管理 /api/profile/**user-service个人资料 /api/drive/**drive-service网盘管理 + /api/drive/**/sync-filesdrive-serviceOpenList 文件同步 + /api/drive/**/play-urldrive-serviceOpenList 播放链接 /api/icon/**drive-serviceIcon管理 /api/movies/**tmdb-service电影管理 /api/tmdb/**, /api/tmdb-scraper/**tmdb-serviceTMDB刮削 @@ -3480,6 +3494,361 @@
+ +
+
+

OpenList 多网盘聚合服务

+ wangpan-drive-service : 8082 · 依赖 OpenList 服务 (http://ldfun.asia:13000) +
+ +
+

功能说明

+

+ OpenList 集成模块将 OpenList 作为多网盘聚合后端,支持 80+ 种网盘服务(阿里云盘、百度网盘、UC网盘、OneDrive 等)。 + Java 服务负责业务逻辑(用户、权限、TMDB 刮削),OpenList 负责文件操作(上传、下载、预览)。 +

+
+
+
前端
+ +
Gateway:8888
+ +
Drive:8082
+ +
OpenList:13000
+ +
各网盘
+
+
+
+ +
+

前置配置

+

+ 1. 在 OpenList 管理后台 (http://ldfun.asia:13000/@manage) 添加网盘存储
+ 2. 记录存储的 挂载路径(如 /uc)和 存储 ID(通过 API 获取)
+ 3. 在 application.yml 中配置 OpenList 服务地址和账号密码
+ 4. 创建网盘时传入 openlistStorageIdopenlistMountPath 关联 OpenList 存储 +

+
+ + +
+
+ POST + /api/drive + 创建网盘(关联 OpenList 存储) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token> +Content-Type: application/json
+
+
+

请求体

+
{ + "name": "UC网盘电影库", + "description": "UC网盘存储", + "openlistStorageId": "1", + "openlistMountPath": "/uc" +}
+
+
+

字段说明

+ + + + + + +
字段类型必填说明
nameString网盘名称
descriptionString网盘描述
openlistStorageIdStringOpenList 存储 ID(不传则仅记录元数据)
openlistMountPathStringOpenList 挂载路径(如 "/uc")
+
+
+

成功响应示例

+
{ + "code": 200, + "message": "创建成功", + "data": { + "id": 1, + "name": "UC网盘电影库", + "description": "UC网盘存储", + "openlistStorageId": "1", + "openlistMountPath": "/uc", + "folderCount": 0, + "fileCount": 0, + "totalSize": 0, + "status": "active", + "createTime": "2026-06-26T15:00:00", + "updateTime": "2026-06-26T15:00:00" + } +}
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "创建网盘失败:网盘名称不能为空", + "data": null +}
+
+
+
+ + +
+
+ POST + /api/drive/{driveId}/folders/{folderId}/sync-files + 从 OpenList 同步文件夹文件 + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
folderIdLong文件夹 ID(0 表示根目录)
+
+
+

功能说明

+

+ 调用 OpenList API 获取指定路径下的文件列表,自动创建数据库中缺失的电影记录。 + 已存在的文件不会重复创建。同步后文件可进行 TMDB 刮削。 +

+
+
+

成功响应示例

+
{ + "code": 200, + "message": "同步成功", + "data": { + "syncCount": 5, + "totalFiles": 10 + } +}
+
+
+

响应字段说明

+ + + + +
字段说明
syncCount本次新增的电影记录数量
totalFilesOpenList 中该路径下的文件总数
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "同步失败:网盘未关联 OpenList 存储", + "data": null +}
+
+
+
+ + +
+
+ GET + /api/drive/{driveId}/movies/{movieId}/play-url + 获取电影真实播放链接 + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
movieIdLong电影 ID
+
+
+

功能说明

+

+ 调用 OpenList API 获取文件的真实下载地址,返回的 URL 可直接用于视频播放器播放。 + 仅支持 storageTypeopenlist 的电影记录。 +

+
+
+

成功响应示例

+
{ + "code": 200, + "message": "获取成功", + "data": { + "playUrl": "https://uc网盘真实下载地址/xxx.mp4", + "fileName": "阿凡达.mp4", + "fileSize": 1073741824 + } +}
+
+
+

响应字段说明

+ + + + + +
字段说明
playUrl真实播放/下载地址,可直接用于视频播放器
fileName文件名
fileSize文件大小(字节)
+
+
+

失败响应示例

+
{ + "code": 400, + "message": "获取失败:该电影不是 OpenList 管理的文件", + "data": null +}
+
+
+
+ + +
+
+ GET + /api/drive + 查看网盘列表(含 OpenList 信息) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

成功响应示例

+
{ + "code": 200, + "data": [ + { + "id": 1, + "name": "UC网盘电影库", + "openlistStorageId": "1", + "openlistMountPath": "/uc", + "folderCount": 2, + "fileCount": 10, + "totalSize": 10737418240, + "status": "active" + } + ] +}
+
+
+

新增字段说明

+ + + + +
字段说明
openlistStorageId关联的 OpenList 存储 ID(null 表示未关联)
openlistMountPathOpenList 挂载路径(如 "/uc")
+
+
+
+ + +
+
+ GET + /api/drive/{driveId}/folders/{folderId}/movies + 查看电影列表(含 OpenList 信息) + 需Token +
+
+
+

请求头

+
Authorization: Bearer <token>
+
+
+

路径参数

+ + + + +
参数类型说明
driveIdLong网盘 ID
folderIdLong文件夹 ID(0 表示根目录)
+
+
+

成功响应示例

+
{ + "code": 200, + "data": { + "list": [ + { + "id": 1, + "title": "阿凡达.mp4", + "openlistFilePath": "/uc/阿凡达.mp4", + "storageType": "openlist", + "fileSize": 1073741824, + "mimeType": "video/mp4" + } + ], + "total": 10, + "page": 1, + "pageSize": 20 + } +}
+
+
+

新增字段说明

+ + + + + +
字段说明
openlistFilePathOpenList 文件路径(如 "/uc/阿凡达.mp4")
storageType存储类型:metadata(仅元数据)/ openlist(OpenList 管理)
fileSize文件大小(字节)
+
+
+
+ + +
+

前端调用示例

+
+

创建网盘

+
const response = await fetch('/api/drive', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + name: 'UC网盘电影库', + openlistStorageId: '1', + openlistMountPath: '/uc' + }) +});
+
+
+

同步文件

+
const response = await fetch(`/api/drive/${driveId}/folders/${folderId}/sync-files`, { + method: 'POST', + headers: { 'Authorization': `Bearer ${token}` } +}); +const data = await response.json(); +console.log(`同步了 ${data.data.syncCount} 个文件`);
+
+
+

播放视频

+
const response = await fetch(`/api/drive/${driveId}/movies/${movieId}/play-url`, { + headers: { 'Authorization': `Bearer ${token}` } +}); +const data = await response.json(); +videoPlayer.src = data.data.playUrl; // 直接设置视频源 +videoPlayer.play();
+
+
+
+