优化解析器链接识别

This commit is contained in:
QAIU
2025-01-07 13:19:40 +08:00
parent 0b3c77d644
commit c37bce1563

View File

@@ -3,6 +3,8 @@ package cn.qaiu.parser;
import cn.qaiu.entity.ShareLinkInfo; import cn.qaiu.entity.ShareLinkInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import static cn.qaiu.parser.PanDomainTemplate.KEY; import static cn.qaiu.parser.PanDomainTemplate.KEY;
@@ -20,9 +22,12 @@ public class ParserCreate {
private final PanDomainTemplate panDomainTemplate; private final PanDomainTemplate panDomainTemplate;
private final ShareLinkInfo shareLinkInfo; private final ShareLinkInfo shareLinkInfo;
private String standardUrl;
public ParserCreate(PanDomainTemplate panDomainTemplate, ShareLinkInfo shareLinkInfo) { public ParserCreate(PanDomainTemplate panDomainTemplate, ShareLinkInfo shareLinkInfo) {
this.panDomainTemplate = panDomainTemplate; this.panDomainTemplate = panDomainTemplate;
this.shareLinkInfo = shareLinkInfo; this.shareLinkInfo = shareLinkInfo;
this.standardUrl = panDomainTemplate.getStandardUrlTemplate();
} }
@@ -38,17 +43,19 @@ public class ParserCreate {
} }
Matcher matcher = this.panDomainTemplate.getPattern().matcher(shareUrl); Matcher matcher = this.panDomainTemplate.getPattern().matcher(shareUrl);
if (matcher.find()) { if (matcher.find()) {
String shareKey = matcher.group(KEY); String k0 = matcher.group(KEY);
String shareKey = URLEncoder.encode(k0, StandardCharsets.UTF_8);
// 返回规范化的标准链接 // 返回规范化的标准链接
String standardUrl = getStandardUrlTemplate() standardUrl = getStandardUrlTemplate()
.replace("{shareKey}", shareKey); .replace("{shareKey}", k0);
try { try {
String pwd = matcher.group(PWD); String pwd = matcher.group(PWD);
if (StringUtils.isNotEmpty(pwd)) { if (StringUtils.isNotEmpty(pwd)) {
shareLinkInfo.setSharePassword(pwd); shareLinkInfo.setSharePassword(pwd);
} }
standardUrl = standardUrl .replace("{pwd}", pwd); standardUrl = standardUrl.replace("{pwd}", pwd);
} catch (Exception ignored) {} } catch (Exception ignored) {}
shareLinkInfo.setShareUrl(shareUrl); shareLinkInfo.setShareUrl(shareUrl);
@@ -88,7 +95,11 @@ public class ParserCreate {
shareLinkInfo.setShareUrl(standardUrl); shareLinkInfo.setShareUrl(standardUrl);
} else { } else {
shareLinkInfo.setShareKey(shareKey); shareLinkInfo.setShareKey(shareKey);
shareLinkInfo.setStandardUrl(panDomainTemplate.getStandardUrlTemplate().replace("{shareKey}", shareKey)); standardUrl = standardUrl.replace("{shareKey}", shareKey);
shareLinkInfo.setStandardUrl(standardUrl);
}
if (StringUtils.isEmpty(shareLinkInfo.getShareUrl())) {
shareLinkInfo.setShareUrl(standardUrl);
} }
return this; return this;
} }
@@ -111,6 +122,11 @@ public class ParserCreate {
public ParserCreate setShareLinkInfoPwd(String pwd) { public ParserCreate setShareLinkInfoPwd(String pwd) {
if (pwd != null) { if (pwd != null) {
shareLinkInfo.setSharePassword(pwd); shareLinkInfo.setSharePassword(pwd);
standardUrl = standardUrl.replace("{pwd}", pwd);
shareLinkInfo.setStandardUrl(standardUrl);
if (shareLinkInfo.getShareUrl().contains("{pwd}")) {
shareLinkInfo.setShareUrl(standardUrl);
}
} }
return this; return this;
} }