文章首发于:clawhub.club


一个一个整理,纯属技术学习与爱好,再次感谢大神:https://github.com/aimerforreimu/auxpi

注意:请善待!!!

5,Baidu

github上的那个接口已经废掉了,所以自己分析了半天百度识图,又在网上找了半天,找到了一个还不错的:https://api.uomg.com/doc-image.baidu.html
这个是他封装好的,可能哪一天就不能用了,免费的东西就是不会稳的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

//百度识图的接口
func UploadToBaidu(img []byte, imgInfo string) string {
body := new(bytes.Buffer)
w := multipart.NewWriter(body)
contentType := w.FormDataContentType()
name := utils.GetFileNameByMimeType(imgInfo)
file, _ := w.CreateFormFile("Filedata", name)
_, _ = file.Write(img)
_ = w.WriteField("file", "multipart")
_ = w.Close()
req, _ := http.NewRequest("POST", "https://api.uomg.com/api/image.baidu", body)
req.Header.Set("Content-Type", contentType)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
baidu := bed.BaiduResp{}
err := json.Unmarshal([]byte(string(data)), &baidu)
if err != nil {
logging.AppLogger.Error("Upload To Baidu fail", zap.Error(err))
return ""
}
return string(baidu.ImgUrl)
}

6,Qihoo

这个是360识图的口子,http://st.so.com/stu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func UploadToQihoo(img []byte, imgInfo string, imgType string) string {
url := "http://st.so.com/stu"
name := utils.GetFileNameByMimeType(imgInfo)

file := &utils.FormFile{
Name: name,
Key: "upload",
Value: img,
Type: imgType,
}
var header map[string]string
data := utils.FormPost(file, url, header)
var re = regexp.MustCompile(`(?m)data-imgkey="(.*)"`)
imgKey := re.FindAllStringSubmatch(data, -1)[0][1]
url = "https://ps.ssl.qhmsg.com/" + imgKey
return url
}
7,NetEasy

网易的口子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func UploadToNetEasy(img []byte, imgInfo string, imgType string) string {
url := "http://you.163.com/xhr/file/upload.json"
name := utils.GetFileNameByMimeType(imgInfo)

file := &utils.FormFile{
Name: name,
Key: "file",
Value: img,
Type: imgType,
}
var header map[string]string
data := utils.FormPost(file, url, header)
netEasy := bed.NetEasyResp{}

_ = json.Unmarshal([]byte(data), &netEasy)
return netEasy.Data[0]
}
8,Jd

京东的口子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
func UploadToJd(img []byte, imgInfo string, imgType string) string {
url := "https://search.jd.com/image?op=upload"
name := utils.GetFileNameByMimeType(imgInfo)

file := &utils.FormFile{
Name: name,
Key: "file",
Value: img,
Type: imgType,
}
var header map[string]string
data := utils.FormPost(file, url, header)
var pre = regexp.MustCompile(`(?m)ERROR`)

if !pre.MatchString(data) {
var re = regexp.MustCompile(`(?m)\("(.*)"\)`)
imgFix := re.FindAllStringSubmatch(data, -1)[0][1]
url = "https://img" + strconv.Itoa(rand.Intn(3)+11) + ".360buyimg.com/img/" + imgFix
return url
} else {
return ""
}

}
9,JueJin

掘金的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func UploadToJueJin(img []byte, imgInfo string, imgType string) string {
url := "https://cdn-ms.juejin.im/v1/upload?bucket=gold-user-assets"
name := utils.GetFileNameByMimeType(imgInfo)

file := &utils.FormFile{
Name: name,
Key: "file",
Value: img,
Type: imgType,
}
var header map[string]string
data := utils.FormPost(file, url, header)
juejin := bed.JueJinResp{}
_ = json.Unmarshal([]byte(data), &juejin)

//神奇三断言 : )
reJ, _ := juejin.D.(map[string]interface{})
urls, _ := reJ["url"].(map[string]interface{})
httpUrl, _ := urls["https"].(string)
return httpUrl
}
10,Ali

阿里的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func UploadToAli(img []byte, imgInfo string, imgType string) string {
url := "https://kfupload.alibaba.com/mupload"
name := utils.GetFileNameByMimeType(imgInfo)

file := &utils.FormFile{
Name: name,
Key: "file",
Value: img,
Type: imgType,
}
//var header map[string]string
data := utils.AliFormPost(file, url)
ali := bed.AliResp{}
_ = json.Unmarshal([]byte(data), &ali)
return ali.Url
}