diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java index 619a9cb..8e10967 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java @@ -8,7 +8,11 @@ public interface ConfigConstant { String SERVER = "server"; String CACHE = "cache"; + String PROXY_SERVER = "proxy-server"; + String PROXY = "proxy"; + + String AUTHS = "auths"; String GLOBAL_CONFIG = "globalConfig"; String CUSTOM_CONFIG = "customConfig"; String ASYNC_SERVICE_INSTANCES = "asyncServiceInstances"; diff --git a/parser/src/main/java/cn/qaiu/entity/FileInfo.java b/parser/src/main/java/cn/qaiu/entity/FileInfo.java index 6f1b0b6..bdfcf1f 100644 --- a/parser/src/main/java/cn/qaiu/entity/FileInfo.java +++ b/parser/src/main/java/cn/qaiu/entity/FileInfo.java @@ -72,6 +72,9 @@ public class FileInfo { //预览地址 private String previewUrl; + // 文件hash默认类型为md5 + private String hash; + /** * 扩展参数 */ @@ -210,6 +213,15 @@ public class FileInfo { return this; } + public String getHash() { + return hash; + } + + public FileInfo setHash(String hash) { + this.hash = hash; + return this; + } + public Map getExtParameters() { return extParameters; } diff --git a/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java b/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java index 9510b32..896b97f 100644 --- a/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java +++ b/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java @@ -225,7 +225,6 @@ public class LzTool extends PanBase { .setParserUrl(getDomainName() + "/d/" + panType + "/" + id) .setPreviewUrl(String.format("%s/v2/view/%s/%s", getDomainName(), shareLinkInfo.getType(), id)); - ; log.debug("文件信息: {}", fileInfo); list.add(fileInfo); }); diff --git a/parser/src/main/java/cn/qaiu/parser/impl/PvyyTool.java b/parser/src/main/java/cn/qaiu/parser/impl/PvyyTool.java index 7ce2f0e..536bcfb 100644 --- a/parser/src/main/java/cn/qaiu/parser/impl/PvyyTool.java +++ b/parser/src/main/java/cn/qaiu/parser/impl/PvyyTool.java @@ -4,10 +4,13 @@ import cn.qaiu.WebClientVertxInit; import cn.qaiu.entity.FileInfo; import cn.qaiu.entity.ShareLinkInfo; import cn.qaiu.parser.PanBase; +import cn.qaiu.util.FileSizeConverter; import cn.qaiu.util.HeaderUtils; import io.vertx.core.Future; import io.vertx.core.MultiMap; import io.vertx.core.Promise; +import io.vertx.core.json.JsonObject; +import io.vertx.core.json.pointer.JsonPointer; import io.vertx.ext.web.client.WebClient; import io.vertx.uritemplate.UriTemplate; @@ -75,7 +78,18 @@ public class PvyyTool extends PanBase { .putHeaders(header) .send().onSuccess(res -> { try { - String id = asJson(res).getJsonObject("data").getJsonObject("data").getString("id"); + JsonObject resJson = asJson(res); + if (!resJson.containsKey("code") || resJson.getInteger("code") != 0) { + fail("获取文件信息失败: " + resJson.getString("message")); + return; + } + JsonObject fileData = resJson.getJsonObject("data").getJsonObject("data"); + if (fileData == null) { + fail("文件数据为空"); + return; + } + setFileInfo(fileData); + String id = fileData.getString("id"); client.getAbs(UriTemplate.of(apiUrl)) .setTemplateParam("key", shareLinkInfo.getShareKey()) @@ -97,6 +111,23 @@ public class PvyyTool extends PanBase { }); } + private void setFileInfo(JsonObject fileData) { + JsonObject attributes = fileData.getJsonObject("attributes"); + JsonObject user = (JsonObject)(JsonPointer.from("/relationships/user/data").queryJson(fileData)); + int downCount = (Integer)(JsonPointer.from("/relationships/shared/data/attributes/down").queryJson(fileData)); + String filesize = attributes.getString("filesize"); + FileInfo fileInfo = new FileInfo() + .setFileId(fileData.getString("id")) + .setFileName(attributes.getString("basename")) + .setFileType(attributes.getString("mimetype")) + .setPanType(shareLinkInfo.getType()) + .setCreateBy(user.getString("email")) + .setDownloadCount(downCount) + .setSize(FileSizeConverter.convertToBytes(filesize)) + .setSizeStr(filesize); + shareLinkInfo.getOtherParam().put("fileInfo", fileInfo); + } + private static final String DIR_API = "https://www.vyuyun.com/apiv1/share/folders/809Pt6/bMjnUg?sort=created_at&direction=DESC&password={pwd}"; private static final String SHARE_TYPE_API = "https://www.vyuyun.com/apiv1/share/info/{key}?password={pwd}"; // diff --git a/parser/src/main/java/cn/qaiu/util/FileSizeConverter.java b/parser/src/main/java/cn/qaiu/util/FileSizeConverter.java index 48ab30c..2e4215d 100644 --- a/parser/src/main/java/cn/qaiu/util/FileSizeConverter.java +++ b/parser/src/main/java/cn/qaiu/util/FileSizeConverter.java @@ -7,8 +7,17 @@ public class FileSizeConverter { throw new IllegalArgumentException("Invalid file size string"); } - sizeStr = sizeStr.trim().toUpperCase(); - char unit = sizeStr.charAt(sizeStr.length() - 1); + sizeStr = sizeStr.replace(",","").trim().toUpperCase(); + // 判断是2位单位还是1位单位 + // 判断单位是否为2位 + int unitIndex = sizeStr.length() - 1; + char unit = sizeStr.charAt(unitIndex); + if (Character.isLetter(sizeStr.charAt(unitIndex - 1))) { + unit = sizeStr.charAt(unitIndex - 1); + sizeStr = sizeStr.substring(0, unitIndex - 1); + } else { + sizeStr = sizeStr.substring(0, unitIndex); + } double size = Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 1)); return switch (unit) { diff --git a/web-front/package.json b/web-front/package.json index 0bead4e..83a381f 100644 --- a/web-front/package.json +++ b/web-front/package.json @@ -11,7 +11,7 @@ "dependencies": { "@element-plus/icons-vue": "^2.3.1", "@vueuse/core": "^11.2.0", - "axios": "^1.7.4", + "axios": "1.11.0", "clipboard": "^2.0.11", "core-js": "^3.8.3", "element-plus": "^2.8.7", diff --git a/web-front/public/index.html b/web-front/public/index.html index db7187f..8d7336c 100644 --- a/web-front/public/index.html +++ b/web-front/public/index.html @@ -153,6 +153,13 @@ } } +
diff --git a/web-front/src/views/Home.vue b/web-front/src/views/Home.vue index f7f0d0d..a47636c 100644 --- a/web-front/src/views/Home.vue +++ b/web-front/src/views/Home.vue @@ -1,5 +1,5 @@