From 42ff0c21b278956bf0b98076420fc1e8c0f18494 Mon Sep 17 00:00:00 2001 From: q Date: Fri, 18 Jul 2025 13:00:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E9=BB=98=E8=AE=A4=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=BF=AE=E6=94=B9=202.=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E8=A7=A3=E6=9E=90=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= =?UTF-8?q?=203.=20=E9=A6=96=E9=A1=B5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/build.bat | 22 -------------- .../main/java/cn/qaiu/parser/impl/FjTool.java | 23 ++++++++++---- .../main/java/cn/qaiu/parser/impl/IzTool.java | 19 ++++++++++-- web-front/src/views/Home.vue | 30 +++++++++++++------ .../cn/qaiu/lz/web/controller/ParserApi.java | 15 ++++++++-- web-service/src/main/resources/app-dev.yml | 6 +--- 6 files changed, 69 insertions(+), 46 deletions(-) delete mode 100644 bin/build.bat diff --git a/bin/build.bat b/bin/build.bat deleted file mode 100644 index 4239e02..0000000 --- a/bin/build.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off -setlocal - -rem 获取当前 Java 版本信息并搜索是否包含 "17." -java -version 2>&1 | find "17." >nul - -rem 如果找不到 JDK 17.x,则下载并安装 -if errorlevel 1 ( - echo JDK 17.x not found. Downloading and installing... - - REM 这里添加下载和安装 JDK 的代码 - - rem 验证安装 - java -version - - echo JDK 17.x installation complete. -) else ( - echo JDK 17.x is already installed. -) - -endlocal -pause \ No newline at end of file diff --git a/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java b/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java index 54028ad..6a17ce7 100644 --- a/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java +++ b/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java @@ -149,7 +149,7 @@ public class FjTool extends PanBase { .setTemplateParam("ts", tsEncode2) .setTemplateParam("auth", auth) .setTemplateParam("dataKey", shareId); - System.out.println(httpRequest.toString()); + // System.out.println(httpRequest.toString()); httpRequest.send().onSuccess(res2 -> { MultiMap headers = res2.headers(); if (!headers.contains("Location")) { @@ -179,7 +179,11 @@ public class FjTool extends PanBase { return promise.future(); } parse().onSuccess(id -> { - parserDir(id, shareId, promise); + if (id != null && id.matches("^[a-zA-Z0-9]+$")) { + parserDir(id, shareId, promise); + } else { + promise.fail("解析目录ID失败"); + } }).onFailure(failRes -> { log.error("解析目录失败: {}", failRes.getMessage()); promise.fail(failRes); @@ -198,8 +202,14 @@ public class FjTool extends PanBase { .setTemplateParam("ts", tsEncode) .setTemplateParam("folderId", id) .send().onSuccess(res -> { - JsonObject jsonObject = asJson(res); - System.out.println(jsonObject.encodePrettily()); + JsonObject jsonObject; + try { + jsonObject = asJson(res); + } catch (Exception e) { + promise.fail(FIRST_REQUEST_URL + " 解析JSON失败: " + res.bodyAsString()); + return; + } + // System.out.println(jsonObject.encodePrettily()); JsonArray list = jsonObject.getJsonArray("list"); ArrayList result = new ArrayList<>(); list.forEach(item->{ @@ -269,7 +279,10 @@ public class FjTool extends PanBase { result.add(fileInfo); }); promise.complete(result); - }); + }).onFailure(failRes -> { + log.error("解析目录请求失败: {}", failRes.getMessage()); + promise.fail(failRes); + });; } @Override diff --git a/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java b/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java index 7ad6890..4b18fa6 100644 --- a/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java +++ b/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java @@ -158,7 +158,11 @@ public class IzTool extends PanBase { return promise.future(); } parse().onSuccess(id -> { - parserDir(id, shareId, promise); + if (id != null && id.matches("^[a-zA-Z0-9]+$")) { + parserDir(id, shareId, promise); + } else { + promise.fail("解析目录ID失败"); + } }).onFailure(failRes -> { log.error("解析目录失败: {}", failRes.getMessage()); promise.fail(failRes); @@ -177,8 +181,14 @@ public class IzTool extends PanBase { .setTemplateParam("ts", tsEncode) .setTemplateParam("folderId", id) .send().onSuccess(res -> { - JsonObject jsonObject = asJson(res); - System.out.println(jsonObject.encodePrettily()); + JsonObject jsonObject; + try { + jsonObject = asJson(res); + } catch (Exception e) { + promise.fail(FIRST_REQUEST_URL + " 解析JSON失败: " + res.bodyAsString()); + return; + } + // System.out.println(jsonObject.encodePrettily()); JsonArray list = jsonObject.getJsonArray("list"); ArrayList result = new ArrayList<>(); list.forEach(item->{ @@ -244,6 +254,9 @@ public class IzTool extends PanBase { result.add(fileInfo); }); promise.complete(result); + }).onFailure(failRes -> { + log.error("解析目录请求失败: {}", failRes.getMessage()); + promise.fail(failRes); }); } diff --git a/web-front/src/views/Home.vue b/web-front/src/views/Home.vue index 2ea5a52..8168982 100644 --- a/web-front/src/views/Home.vue +++ b/web-front/src/views/Home.vue @@ -48,7 +48,7 @@
-
NFD网盘直链解析0.1.9_bate6
+
NFD网盘直链解析0.1.9_bate7
支持网盘:蓝奏云、蓝奏云优享、小飞机盘、123云盘、奶牛快传、移动云空间、亿方云、文叔叔、QQ邮箱文件中转站等
文件夹解析支持:蓝奏云、蓝奏云优享、小飞机盘、123云盘
@@ -161,6 +161,9 @@ {{ statisticsData.downLink }} + + {{ statisticsData.viewLink }} + {{ statisticsData.parserTotal }} {{ statisticsData.cacheHitTotal }} {{ statisticsData.sumTotal }} @@ -187,13 +190,19 @@ -
- 分享文件直链 -
+ + + -
- 分享目录直链 -
+ + + + + + + + +
@@ -246,7 +255,8 @@ export default { directoryViewMode: 'pane', // 新增,目录树展示模式 hasClipboardSuccessTip: false, // 新增,聚焦期间只提示一次 showRiskDialog: false, - baseUrl: location.origin + baseUrl: location.origin, + showListLink: '', } }, methods: { @@ -334,7 +344,9 @@ export default { const directoryResult = await this.callAPI('/v2/getFileList', params) this.directoryData = directoryResult.data || [] this.showDirectoryTree = true - + // 自动赋值分享链接 + this.showListLink = `${this.baseUrl}/showList?url=${encodeURIComponent(this.link)}` + this.$message.success(`目录解析成功!共找到 ${this.directoryData.length} 个文件/文件夹`) } catch (error) { console.error('目录解析失败:', error) diff --git a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java index b9c5a8a..7fecbbc 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java @@ -46,6 +46,7 @@ public class ParserApi { } private final CacheManager cacheManager = new CacheManager(); + private final ServerApi serverApi = new ServerApi(); @RouteMapping(value = "/linkInfo", method = RouteMethod.GET) public Future parse(HttpServerRequest request, String pwd) { @@ -56,6 +57,7 @@ public class ParserApi { LinkInfoResp build = LinkInfoResp.builder() .downLink(getDownLink(parserCreate, false)) .apiLink(getDownLink(parserCreate, true)) + .viewLink(getViewLink(parserCreate)) .shareLinkInfo(shareLinkInfo).build(); // 解析次数统计 shareLinkInfo.getOtherParam().put("UA",request.headers().get("user-agent")); @@ -83,6 +85,15 @@ public class ParserApi { return linkPrefix + (isJson ? "/json/" : "/d/") + create.genPathSuffix(); } + private static String getViewLink(ParserCreate create) { + + String linkPrefix = SharedDataUtil.getJsonStringForServerConfig("domainName"); + if (StringUtils.isBlank(linkPrefix)) { + return ""; + } + return linkPrefix + "/v2/view/" + create.genPathSuffix(); + } + /** * 获取支持的网盘列表 * @return list-map: name: 网盘名, type: 网盘标识, url: 网盘域名地址 @@ -151,7 +162,7 @@ public class ParserApi { @RouteMapping(value = "/view/:type/:key", method = RouteMethod.GET, order = 2) public void view(HttpServerRequest request, HttpServerResponse response, String type, String key) { String previewURL = SharedDataUtil.getJsonStringForServerConfig("previewURL"); - new ServerApi().parseKeyJson(request, type, key).onSuccess(res -> { + serverApi.parseKeyJson(request, type, key).onSuccess(res -> { redirect(response, previewURL, res); }).onFailure(e -> { ResponseUtil.fireJsonResultResponse(response, JsonResult.error(e.toString())); @@ -164,7 +175,7 @@ public class ParserApi { } /** - * 预览媒体文件 + * 预览媒体文件-目录预览 */ @RouteMapping(value = "/preview", method = RouteMethod.GET, order = 9) public void viewURL(HttpServerRequest request, HttpServerResponse response, String pwd) { diff --git a/web-service/src/main/resources/app-dev.yml b/web-service/src/main/resources/app-dev.yml index 326c59a..622d10a 100644 --- a/web-service/src/main/resources/app-dev.yml +++ b/web-service/src/main/resources/app-dev.yml @@ -63,7 +63,7 @@ cache: # 该配置未使用,后续加入其他Cache实现时,区分类型 type: h2db # 默认时长: 单位分钟,大部分网盘未严格验证,建议不要太大 - defaultDuration: 59 + defaultDuration: 5 # 具体网盘的缓存配置,如果不加配置则不缓存,每次请求都会请求网盘API,格式:网盘标识: 时长 duration: ce: 5 @@ -93,7 +93,3 @@ proxy: # username: # password: - -# 代理池配置 -#ip-pool: -# api-url: