vert.x升级到4.4.1

This commit is contained in:
qaiu
2023-04-22 11:34:05 +08:00
parent e36e644394
commit 5d366f43ae
10 changed files with 79 additions and 48 deletions

View File

@@ -1,15 +1,17 @@
# lz-cow-api # lz-cow-api
蓝奏云-奶牛快传的直链解析的API服务 蓝奏云-奶牛快传的直链解析的API服务
使用Jdk17+Vert.x4.4.1+Jsoup
Core模块集成Vert.x实现声明式路由API
示例: 示例:
``` ```
// 解析并重定向到直链 // 解析并重定向到直链
### ###
# @no-redirect # @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 # @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 蓝奏云 // Rest请求(只提供共享文件Id): cow 奶牛快传; lz 蓝奏云
### ###

18
bin/lz-api.service Normal file
View File

@@ -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

10
bin/service-install.sh Normal file
View File

@@ -0,0 +1,10 @@
cp ./lz-api.service /etc/systemd/system/
# 重新加载 systemd
systemctl daemon-reload
# 运行服务
systemctl start lz-api
# 在系统启动时启动服务
systemctl enable lz-api

View File

@@ -14,11 +14,11 @@
<properties> <properties>
<java.version>17</java.version> <java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<vertx.version>4.1.3</vertx.version> <vertx.version>4.4.1</vertx.version>
<org.reflections.version>0.9.12</org.reflections.version> <org.reflections.version>0.10.2</org.reflections.version>
<lombok.version>1.18.12</lombok.version> <lombok.version>1.18.12</lombok.version>
<slf4j.version>2.0.5</slf4j.version> <slf4j.version>2.0.5</slf4j.version>
<commons-lang3.version>3.8.1</commons-lang3.version> <commons-lang3.version>3.12.0</commons-lang3.version>
<jackson.version>2.11.3</jackson.version> <jackson.version>2.11.3</jackson.version>
</properties> </properties>

View File

@@ -67,18 +67,21 @@ public final class Deploy {
* 打印logo * 打印logo
*/ */
private void outLogo(JsonObject conf) { private void outLogo(JsonObject conf) {
Date date = new Date();
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(date); calendar.setTime(new Date());
int year = calendar.get(Calendar.YEAR); var year = calendar.get(Calendar.YEAR);
String logoTemplete = "\nWeb Server powered by: \n" + var logoTemplete = """
" ____ ____ _ _ _ \n" +
"|_^^_| |_^^_| / |_ | | | | \n" + Web Server powered by:\s
" \\ \\ / /.---. _ .--.`| |-' _ __ | |__| |_ \n" + ____ ____ _ _ _ \s
" \\ \\ / // /__\\\\[ `/'`\\]| | [ \\ [ ]|____ _| \n" + |_^^_| |_^^_| / |_ | | | | \s
" \\ V / | \\__., | | | |, _ > ' < _| |_ \n" + \\ \\ / /.---. _ .--.`| |-' _ __ | |__| |_ \s
" \\_/ '.__.'[___] \\__/(_)[__]`\\_] |_____| \n" + \\ \\ / // /__\\\\[ `/'`\\]| | [ \\ [ ]|____ _|\s
" Version: %s; Framework version: %s; %s©%d.\n\n"; \\ V / | \\__., | | | |, _ > ' < _| |_ \s
\\_/ '.__.'[___] \\__/(_)[__]`\\_] |_____|\s
Version: %s; Framework version: %s; %s©%d.
""";
System.out.printf(logoTemplete, System.out.printf(logoTemplete,
conf.getString("version_app"), conf.getString("version_app"),

View File

@@ -1,7 +1,9 @@
package cn.qaiu.lz; package cn.qaiu.lz;
import cn.qaiu.vx.core.Deploy; import cn.qaiu.vx.core.Deploy;
import cn.qaiu.vx.core.util.VertxHolder;
import io.vertx.core.json.JsonObject; import io.vertx.core.json.JsonObject;
import lombok.val;
/** /**
@@ -22,7 +24,6 @@ public class AppMain {
* @param jsonObject 配置 * @param jsonObject 配置
*/ */
private static void exec(JsonObject jsonObject) { private static void exec(JsonObject jsonObject) {
//
} }

View File

@@ -41,38 +41,36 @@ public class CowTool {
} }
*/ */
public static String parse(String fullUrl) throws IOException { public static String parse(String fullUrl) throws IOException {
String uniqueUrl = fullUrl.substring(fullUrl.lastIndexOf('/') + 1); var uniqueUrl = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
String baseUrl = "https://cowtransfer.com/core/api/transfer/share"; var baseUrl = "https://cowtransfer.com/core/api/transfer/share";
String result = Jsoup var result = Jsoup
.connect(baseUrl + "?uniqueUrl=" + uniqueUrl).ignoreContentType(true) .connect(baseUrl + "?uniqueUrl=" + uniqueUrl).ignoreContentType(true)
.get() .get()
.text(); .text();
ObjectMapper objectMapper = new ObjectMapper(); var objectMapper = new ObjectMapper();
Map<String, Object> map = objectMapper.readValue(result, new TypeReference<>() { Map<String, Object> map = objectMapper.readValue(result, new TypeReference<>() {
}); });
if ("success".equals(map.get("message")) && map.containsKey("data")) { if ("success".equals(map.get("message")) && map.containsKey("data")) {
Map<String, Object> data = CastUtil.cast(map.get("data")); Map<String, Object> data = CastUtil.cast(map.get("data"));
String guid = data.get("guid").toString(); var guid = data.get("guid").toString();
Map<String, Object> firstFile = CastUtil.cast(data.get("firstFile")); Map<String, Object> firstFile = CastUtil.cast(data.get("firstFile"));
String fileId = firstFile.get("id").toString(); var fileId = firstFile.get("id").toString();
String result2 = Jsoup var result2 = Jsoup
.connect(baseUrl + "/download?transferGuid=" + guid + "&fileId=" + fileId) .connect(baseUrl + "/download?transferGuid=" + guid + "&fileId=" + fileId)
.ignoreContentType(true) .ignoreContentType(true)
.get() .get()
.text(); .text();
Map<String, Object> map2 = objectMapper.readValue(result2, new TypeReference<>() { Map<String, Object> map2 = objectMapper.readValue(result2, new TypeReference<>() {});
});
if ("success".equals(map2.get("message")) && map2.containsKey("data")) { if ("success".equals(map2.get("message")) && map2.containsKey("data")) {
Map<String, Object> data2 = CastUtil.cast(map2.get("data")); Map<String, Object> data2 = CastUtil.cast(map2.get("data"));
String downloadUrl = data2.get("downloadUrl").toString(); var downloadUrl = data2.get("downloadUrl").toString();
if (StringUtils.isNotEmpty(downloadUrl)) { if (StringUtils.isNotEmpty(downloadUrl)) {
log.info("cow parse success: {}", downloadUrl); log.info("cow parse success: {}", downloadUrl);
return downloadUrl; return downloadUrl;
} }
} }
} }
log.info("Cow parse field------------->end"); log.info("Cow parse field------------->end");
return null; return null;

View File

@@ -18,27 +18,26 @@ import java.util.regex.Pattern;
public class LzTool { public class LzTool {
public static String parse(String fullUrl) throws Exception { 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"; 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";
String url = fullUrl.substring(0, fullUrl.lastIndexOf('/') + 1); var url = fullUrl.substring(0, fullUrl.lastIndexOf('/') + 1);
String id = fullUrl.substring(fullUrl.lastIndexOf('/') + 1); var id = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
Map<String, String> header = new HashMap<>(); Map<String, String> 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("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); header.put("referer", url);
/* /*
// 部分链接需要设置安卓UA // 部分链接需要设置安卓UA
sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111" sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"
sec-ch-ua-mobile: ?1 sec-ch-ua-mobile: ?1
sec-ch-ua-platform: "Android" 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<String, String> header2 = new HashMap<>(); Map<String, String> 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("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-mobile", "sec-ch-ua-mobile");
header2.put("sec-ch-ua-platform", "Android"); header2.put("sec-ch-ua-platform", "Android");
header2.put("referer", url); header2.put("referer", url);
//第一次请求获取iframe的地址 //第一次请求获取iframe的地址
String result = Jsoup.connect(url + id) String result = Jsoup.connect(url + id)
.userAgent(userAgent) .userAgent(userAgent)
@@ -75,11 +74,11 @@ public class LzTool {
.text() .text()
.replace("\\", ""); .replace("\\", "");
//json转为map //json转为map
params = new ObjectMapper().readValue(result, new TypeReference<Map<String, String>>() {}); params = new ObjectMapper().readValue(result, new TypeReference<>() {});
// System.out.println(params); // System.out.println(params);
//通过json的数据拼接出最终的URL发起第最终请求,并得到响应信息头 //通过json的数据拼接出最终的URL发起第最终请求,并得到响应信息头
url = params.get("dom") + "/file/" + params.get("url"); url = params.get("dom") + "/file/" + params.get("url");
Map<String, String> headers = Jsoup.connect(url) var headers = Jsoup.connect(url)
.ignoreContentType(true) .ignoreContentType(true)
.userAgent(userAgent2) .userAgent(userAgent2)
.headers(header2) .headers(header2)

View File

@@ -36,14 +36,14 @@ public class ServerApi {
return JsonResult.data("ok"); return JsonResult.data("ok");
} }
@RouteMapping(value = "/parse", method = RouteMethod.GET) @RouteMapping(value = "/parser", method = RouteMethod.GET)
public void parse(HttpServerResponse response, String url) throws Exception { public void parse(HttpServerResponse response, String url) throws Exception {
if (url.contains("lanzou")) { if (url.contains("lanzou")) {
String urlDownload = LzTool.parse(url); var urlDownload = LzTool.parse(url);
log.info("url = {}", urlDownload); log.info("url = {}", urlDownload);
response.putHeader("location", urlDownload).setStatusCode(302).end(); response.putHeader("location", urlDownload).setStatusCode(302).end();
} else if (url.contains("cowtransfer.com")) { } else if (url.contains("cowtransfer.com")) {
String urlDownload = CowTool.parse(url); var urlDownload = CowTool.parse(url);
response.putHeader("location", urlDownload).setStatusCode(302).end(); response.putHeader("location", urlDownload).setStatusCode(302).end();
} }
@@ -51,30 +51,30 @@ public class ServerApi {
@RouteMapping(value = "/lz/:id", method = RouteMethod.GET) @RouteMapping(value = "/lz/:id", method = RouteMethod.GET)
public void lzParse(HttpServerResponse response, String id) throws Exception { public void lzParse(HttpServerResponse response, String id) throws Exception {
String url = "https://wwa.lanzoux.com/" + id; var url = "https://wwa.lanzoux.com/" + id;
String urlDownload = LzTool.parse(url); var urlDownload = LzTool.parse(url);
log.info("url = {}", urlDownload); log.info("url = {}", urlDownload);
response.putHeader("location", urlDownload).setStatusCode(302).end(); response.putHeader("location", urlDownload).setStatusCode(302).end();
} }
@RouteMapping(value = "/cow/:id", method = RouteMethod.GET) @RouteMapping(value = "/cow/:id", method = RouteMethod.GET)
public void cowParse(HttpServerResponse response, String id) throws Exception { public void cowParse(HttpServerResponse response, String id) throws Exception {
String url = "https://cowtransfer.com/s/" + id; var url = "https://cowtransfer.com/s/" + id;
String urlDownload = CowTool.parse(url); var urlDownload = CowTool.parse(url);
response.putHeader("location", urlDownload).setStatusCode(302).end(); response.putHeader("location", urlDownload).setStatusCode(302).end();
} }
@RouteMapping(value = "/json/lz/:id", method = RouteMethod.GET) @RouteMapping(value = "/json/lz/:id", method = RouteMethod.GET)
public JsonResult<String> lzParseJson(HttpServerResponse response, String id) throws Exception { public JsonResult<String> lzParseJson(HttpServerResponse response, String id) throws Exception {
String url = "https://wwa.lanzoux.com/" + id; var url = "https://wwa.lanzoux.com/" + id;
String urlDownload = LzTool.parse(url); var urlDownload = LzTool.parse(url);
log.info("url = {}", urlDownload); log.info("url = {}", urlDownload);
return JsonResult.data(urlDownload); return JsonResult.data(urlDownload);
} }
@RouteMapping(value = "/json/cow/:id", method = RouteMethod.GET) @RouteMapping(value = "/json/cow/:id", method = RouteMethod.GET)
public JsonResult<String> cowParseJson(HttpServerResponse response, String id) throws Exception { public JsonResult<String> cowParseJson(HttpServerResponse response, String id) throws Exception {
String url = "https://cowtransfer.com/s/" + id; var url = "https://cowtransfer.com/s/" + id;
return JsonResult.data(CowTool.parse(url)); return JsonResult.data(CowTool.parse(url));
} }
} }

View File

@@ -2,10 +2,10 @@
GET http://127.0.0.1:6400/api/serverApi/test3?fullUrl=https://wwp.lanzoux.com/iNvid035jgcb GET http://127.0.0.1:6400/api/serverApi/test3?fullUrl=https://wwp.lanzoux.com/iNvid035jgcb
### ###
# @no-redirect # @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 # @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
### ###
# @no-redirect # @no-redirect
GET http://127.0.0.1:6400/cow/9a644fe3e3a748 GET http://127.0.0.1:6400/cow/9a644fe3e3a748