mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-13 21:53:41 +08:00
Url解析组件模式重构(不影响旧版本使用)
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
package com.abin.mallchat.common.common.utils.chain;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jsoup.nodes.Document;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description:
|
||||||
|
* Author: achao
|
||||||
|
* Date: 2023/7/6 9:25
|
||||||
|
*/
|
||||||
|
public class CommonUrlHandler extends FactoryUrlHandler {
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getTitle(Document document) {
|
||||||
|
return document.title();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getDescription(Document document) {
|
||||||
|
String description = document.head().select("meta[name=description]").attr("content");
|
||||||
|
String keywords = document.head().select("meta[name=keywords]").attr("content");
|
||||||
|
String content = StrUtil.isNotBlank(description) ? description : keywords;
|
||||||
|
//只保留一句话的描述
|
||||||
|
return StrUtil.isNotBlank(content) ? content.substring(0, content.indexOf("。")) : content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getImage(String url, Document document) {
|
||||||
|
String image = document.select("link[type=image/x-icon]").attr("href");
|
||||||
|
//如果没有去匹配含有icon属性的logo
|
||||||
|
String href = StrUtil.isEmpty(image) ? document.select("link[rel$=icon]").attr("href") : image;
|
||||||
|
//如果icon中已经包含了url部分域名
|
||||||
|
if (StrUtil.isNotBlank(StrUtil.removeAny(StrUtil.removeAny(href, "/"), "favicon.ico")) &&
|
||||||
|
StrUtil.containsAny(StrUtil.removePrefix(url, "http://"), StrUtil.removeAny(StrUtil.removeAny(href, "/"), "favicon.ico"))) {
|
||||||
|
return "http://" + StrUtil.removePrefix(href, "/");
|
||||||
|
}
|
||||||
|
//如果url已经包含了logo
|
||||||
|
if (StrUtil.containsAny(url, "favicon")) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
//如果logo中有url
|
||||||
|
if (StrUtil.containsAny(href, "http") || StrUtil.containsAny(href, "https")) {
|
||||||
|
return href;
|
||||||
|
}
|
||||||
|
return StrUtil.format("{}/{}", url, StrUtil.removePrefix(href, "/"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user