74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/base64"
|
|
"encoding/hex"
|
|
"errors"
|
|
"net/url"
|
|
"strings"
|
|
|
|
"github.com/enplee/extraURLs"
|
|
"github.com/skip2/go-qrcode"
|
|
)
|
|
|
|
func Md5(str string) string {
|
|
h := md5.New()
|
|
h.Write([]byte(str))
|
|
return hex.EncodeToString(h.Sum(nil))
|
|
}
|
|
|
|
func ObjectKey(s string) (string, error) {
|
|
s = strings.TrimSpace(s)
|
|
u, err := url.Parse(s)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
s = u.Path
|
|
if strings.Contains(s, "?") {
|
|
s = s[:strings.Index(s, "?")]
|
|
}
|
|
|
|
return s, nil
|
|
}
|
|
|
|
// TextExtraURLs 文本中提取url
|
|
func TextExtraURLs(t string) ([]string, error) {
|
|
t = strings.ReplaceAll(t, " xhslink.com", "https://xhslink.com")
|
|
rxStrict := extraURLs.Strict()
|
|
urls := rxStrict.FindAllString(t, -1) // []string{"http://foo.com/"}
|
|
if len(urls) > 0 {
|
|
return urls, nil
|
|
}
|
|
return nil, errors.New("not found url")
|
|
}
|
|
|
|
func UrlFormat(urlStr string) string {
|
|
// 针对小红书
|
|
if strings.Contains(urlStr, "xhslink.com") {
|
|
urlStr = strings.Split(urlStr, ",复制本条信息")[0]
|
|
}
|
|
return urlStr
|
|
}
|
|
|
|
func KeyContainMapString(m []string, s string) bool {
|
|
for _, v := range m {
|
|
if strings.Contains(s, v) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
func CreateQrcodeBase64(content string, level qrcode.RecoveryLevel, size int) (string, error) {
|
|
var png []byte
|
|
//固定方法
|
|
png, err := qrcode.Encode(content, level, size)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
//文件流需要使用base64编码后才可使用
|
|
res := "data:image/png;base64," + base64.StdEncoding.EncodeToString(png)
|
|
return res, nil
|
|
}
|