From 5d366f43aecf1aab58b80706e4c042618f6744b1 Mon Sep 17 00:00:00 2001
From: qaiu <736226400@qq.com>
Date: Sat, 22 Apr 2023 11:34:05 +0800
Subject: [PATCH] =?UTF-8?q?vert.x=E5=8D=87=E7=BA=A7=E5=88=B04.4.1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 +++--
bin/lz-api.service | 18 +++++++++++++
bin/service-install.sh | 10 ++++++++
core/pom.xml | 6 ++---
.../src/main/java/cn/qaiu/vx/core/Deploy.java | 25 +++++++++++--------
.../src/main/java/cn/qaiu/lz/AppMain.java | 3 ++-
.../java/cn/qaiu/lz/common/util/CowTool.java | 20 +++++++--------
.../java/cn/qaiu/lz/common/util/LzTool.java | 15 ++++++-----
.../java/cn/qaiu/lz/web/http/ServerApi.java | 20 +++++++--------
lz-cow-api-web/src/main/resources/1.http | 4 +--
10 files changed, 79 insertions(+), 48 deletions(-)
create mode 100644 bin/lz-api.service
create mode 100644 bin/service-install.sh
diff --git a/README.md b/README.md
index 6e64616..a4215c1 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,17 @@
# lz-cow-api
蓝奏云-奶牛快传的直链解析的API服务
+使用Jdk17+Vert.x4.4.1+Jsoup
+Core模块集成Vert.x实现声明式路由API
示例:
```
// 解析并重定向到直链
###
# @no-redirect
-GET http://127.0.0.1:6400/parse?url=https://lanzoux.com/ia2cntg
+GET http://127.0.0.1:6400/parser?url=https://lanzoux.com/ia2cntg
###
# @no-redirect
-GET http://127.0.0.1:6400/parse?url=https://cowtransfer.com/s/9a644fe3e3a748
+GET http://127.0.0.1:6400/parser?url=https://cowtransfer.com/s/9a644fe3e3a748
// Rest请求(只提供共享文件Id): cow 奶牛快传; lz 蓝奏云
###
diff --git a/bin/lz-api.service b/bin/lz-api.service
new file mode 100644
index 0000000..7d7188e
--- /dev/null
+++ b/bin/lz-api.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=lz-api
+Documentation=https://qaiu.top
+After=network-online.target
+Wants=network-online.target
+
+[Service]
+Type=simple
+# User=USER
+ExecStart=/usr/bin/java -server -Xmx128m -jar /root/java/lz-cow-api-web/lz-cow-api-web-0.0.1.jar
+ExecStop=/bin/kill -s QUIT $MAINPID
+Restart=always
+StandOutput=syslog
+
+StandError=inherit
+
+[Install]
+WantedBy=multi-user.target
diff --git a/bin/service-install.sh b/bin/service-install.sh
new file mode 100644
index 0000000..cb21cf6
--- /dev/null
+++ b/bin/service-install.sh
@@ -0,0 +1,10 @@
+cp ./lz-api.service /etc/systemd/system/
+
+# 重新加载 systemd
+systemctl daemon-reload
+
+# 运行服务
+systemctl start lz-api
+
+# 在系统启动时启动服务
+systemctl enable lz-api
diff --git a/core/pom.xml b/core/pom.xml
index f765612..0503ff2 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -14,11 +14,11 @@
17
UTF-8
- 4.1.3
- 0.9.12
+ 4.4.1
+ 0.10.2
1.18.12
2.0.5
- 3.8.1
+ 3.12.0
2.11.3
diff --git a/core/src/main/java/cn/qaiu/vx/core/Deploy.java b/core/src/main/java/cn/qaiu/vx/core/Deploy.java
index 52690b8..aae1198 100644
--- a/core/src/main/java/cn/qaiu/vx/core/Deploy.java
+++ b/core/src/main/java/cn/qaiu/vx/core/Deploy.java
@@ -67,18 +67,21 @@ public final class Deploy {
* 打印logo
*/
private void outLogo(JsonObject conf) {
- Date date = new Date();
Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- int year = calendar.get(Calendar.YEAR);
- String logoTemplete = "\nWeb Server powered by: \n" +
- " ____ ____ _ _ _ \n" +
- "|_^^_| |_^^_| / |_ | | | | \n" +
- " \\ \\ / /.---. _ .--.`| |-' _ __ | |__| |_ \n" +
- " \\ \\ / // /__\\\\[ `/'`\\]| | [ \\ [ ]|____ _| \n" +
- " \\ V / | \\__., | | | |, _ > ' < _| |_ \n" +
- " \\_/ '.__.'[___] \\__/(_)[__]`\\_] |_____| \n" +
- " Version: %s; Framework version: %s; %s©%d.\n\n";
+ calendar.setTime(new Date());
+ var year = calendar.get(Calendar.YEAR);
+ var logoTemplete = """
+
+ Web Server powered by:\s
+ ____ ____ _ _ _ \s
+ |_^^_| |_^^_| / |_ | | | | \s
+ \\ \\ / /.---. _ .--.`| |-' _ __ | |__| |_ \s
+ \\ \\ / // /__\\\\[ `/'`\\]| | [ \\ [ ]|____ _|\s
+ \\ V / | \\__., | | | |, _ > ' < _| |_ \s
+ \\_/ '.__.'[___] \\__/(_)[__]`\\_] |_____|\s
+ Version: %s; Framework version: %s; %s©%d.
+
+ """;
System.out.printf(logoTemplete,
conf.getString("version_app"),
diff --git a/lz-cow-api-web/src/main/java/cn/qaiu/lz/AppMain.java b/lz-cow-api-web/src/main/java/cn/qaiu/lz/AppMain.java
index 6b653dc..c47f966 100644
--- a/lz-cow-api-web/src/main/java/cn/qaiu/lz/AppMain.java
+++ b/lz-cow-api-web/src/main/java/cn/qaiu/lz/AppMain.java
@@ -1,7 +1,9 @@
package cn.qaiu.lz;
import cn.qaiu.vx.core.Deploy;
+import cn.qaiu.vx.core.util.VertxHolder;
import io.vertx.core.json.JsonObject;
+import lombok.val;
/**
@@ -22,7 +24,6 @@ public class AppMain {
* @param jsonObject 配置
*/
private static void exec(JsonObject jsonObject) {
- //
}
diff --git a/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/CowTool.java b/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/CowTool.java
index 3585386..a0e969c 100644
--- a/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/CowTool.java
+++ b/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/CowTool.java
@@ -41,38 +41,36 @@ public class CowTool {
}
*/
public static String parse(String fullUrl) throws IOException {
- String uniqueUrl = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
- String baseUrl = "https://cowtransfer.com/core/api/transfer/share";
- String result = Jsoup
+ var uniqueUrl = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
+ var baseUrl = "https://cowtransfer.com/core/api/transfer/share";
+ var result = Jsoup
.connect(baseUrl + "?uniqueUrl=" + uniqueUrl).ignoreContentType(true)
.get()
.text();
- ObjectMapper objectMapper = new ObjectMapper();
+ var objectMapper = new ObjectMapper();
Map map = objectMapper.readValue(result, new TypeReference<>() {
});
if ("success".equals(map.get("message")) && map.containsKey("data")) {
Map data = CastUtil.cast(map.get("data"));
- String guid = data.get("guid").toString();
+ var guid = data.get("guid").toString();
Map firstFile = CastUtil.cast(data.get("firstFile"));
- String fileId = firstFile.get("id").toString();
- String result2 = Jsoup
+ var fileId = firstFile.get("id").toString();
+ var result2 = Jsoup
.connect(baseUrl + "/download?transferGuid=" + guid + "&fileId=" + fileId)
.ignoreContentType(true)
.get()
.text();
- Map map2 = objectMapper.readValue(result2, new TypeReference<>() {
- });
+ Map map2 = objectMapper.readValue(result2, new TypeReference<>() {});
if ("success".equals(map2.get("message")) && map2.containsKey("data")) {
Map data2 = CastUtil.cast(map2.get("data"));
- String downloadUrl = data2.get("downloadUrl").toString();
+ var downloadUrl = data2.get("downloadUrl").toString();
if (StringUtils.isNotEmpty(downloadUrl)) {
log.info("cow parse success: {}", downloadUrl);
return downloadUrl;
}
}
-
}
log.info("Cow parse field------------->end");
return null;
diff --git a/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/LzTool.java b/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/LzTool.java
index 668f3b4..2f8d3a4 100644
--- a/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/LzTool.java
+++ b/lz-cow-api-web/src/main/java/cn/qaiu/lz/common/util/LzTool.java
@@ -18,27 +18,26 @@ import java.util.regex.Pattern;
public class LzTool {
public static String parse(String fullUrl) throws Exception {
- String userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.3";
- String url = fullUrl.substring(0, fullUrl.lastIndexOf('/') + 1);
- String id = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
+ var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.3";
+ var url = fullUrl.substring(0, fullUrl.lastIndexOf('/') + 1);
+ var id = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
Map header = new HashMap<>();
header.put("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
header.put("referer", url);
-
/*
// 部分链接需要设置安卓UA
sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"
sec-ch-ua-mobile: ?1
sec-ch-ua-platform: "Android"
*/
- String userAgent2 = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36";
-
+ var userAgent2 = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36";
Map header2 = new HashMap<>();
header2.put("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
header2.put("sec-ch-ua-mobile", "sec-ch-ua-mobile");
header2.put("sec-ch-ua-platform", "Android");
header2.put("referer", url);
+
//第一次请求,获取iframe的地址
String result = Jsoup.connect(url + id)
.userAgent(userAgent)
@@ -75,11 +74,11 @@ public class LzTool {
.text()
.replace("\\", "");
//json转为map
- params = new ObjectMapper().readValue(result, new TypeReference