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 }