mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-20 06:20:08 +08:00
🐛 saucenao reflect
This commit is contained in:
parent
5053091e44
commit
5d73216238
@ -108,36 +108,15 @@ func init() { // 插件主体
|
|||||||
engine.OnKeywordGroup([]string{"以图搜图", "搜索图片", "以图识图"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true).
|
engine.OnKeywordGroup([]string{"以图搜图", "搜索图片", "以图识图"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true).
|
||||||
Handle(func(ctx *zero.Ctx) {
|
Handle(func(ctx *zero.Ctx) {
|
||||||
// 开始搜索图片
|
// 开始搜索图片
|
||||||
ctx.SendChain(message.Text("少女祈祷中......"))
|
ctx.SendChain(message.Text("少女祈祷中..."))
|
||||||
for _, pic := range ctx.State["image_url"].([]string) {
|
for _, pic := range ctx.State["image_url"].([]string) {
|
||||||
if saucenaocli != nil {
|
if saucenaocli != nil {
|
||||||
resp, err := saucenaocli.FromURL(pic)
|
resp, err := saucenaocli.FromURL(pic)
|
||||||
if err == nil && resp.Count() > 0 {
|
if err == nil && resp.Count() > 0 {
|
||||||
result := resp.First()
|
result := resp.First()
|
||||||
// 返回SauceNAO的结果
|
s, err := strconv.ParseFloat(result.Header.Similarity, 64)
|
||||||
source := ""
|
if err == nil {
|
||||||
switch {
|
rr := reflect.ValueOf(&result.Data).Elem()
|
||||||
case result.IsPixiv():
|
|
||||||
source = "Pixiv"
|
|
||||||
case result.IsAniDB():
|
|
||||||
source = "AniDB"
|
|
||||||
case result.IsBcy():
|
|
||||||
source = "Bcy"
|
|
||||||
case result.IsDanbooru():
|
|
||||||
source = "Danbooru"
|
|
||||||
case result.IsDeviantArt():
|
|
||||||
source = "DeviantArt"
|
|
||||||
case result.IsIMDb():
|
|
||||||
source = "IMDb"
|
|
||||||
case result.IsPawoo():
|
|
||||||
source = "Pawoo"
|
|
||||||
case result.IsSankaku():
|
|
||||||
source = "Sankaku"
|
|
||||||
case result.IsSeiga():
|
|
||||||
source = "Seiga"
|
|
||||||
}
|
|
||||||
if source != "" {
|
|
||||||
rr := reflect.ValueOf(&result).Elem()
|
|
||||||
b := binary.NewWriterF(func(w *binary.Writer) {
|
b := binary.NewWriterF(func(w *binary.Writer) {
|
||||||
r := rr.Type()
|
r := rr.Type()
|
||||||
for i := 0; i < r.NumField(); i++ {
|
for i := 0; i < r.NumField(); i++ {
|
||||||
@ -150,22 +129,24 @@ func init() { // 插件主体
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
resp, err := http.Head(result.Header.Thumbnail)
|
resp, err := http.Head(result.Header.Thumbnail)
|
||||||
if err == nil && resp.StatusCode == http.StatusOK {
|
var msg message.Message = make(message.Message, 0, 3)
|
||||||
ctx.SendChain(
|
if s > 0.8 {
|
||||||
message.Text("我有把握是这个!"),
|
msg = append(msg, message.Text("我有把握是这个!"))
|
||||||
message.Image(result.Header.Thumbnail),
|
|
||||||
message.Text("\n图源: ", source, binary.BytesToString(b)),
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
ctx.SendChain(
|
msg = append(msg, message.Text("也许是这个?"))
|
||||||
message.Text("我有把握是这个!"),
|
|
||||||
message.Image(pic),
|
|
||||||
message.Text("\n图源: ", source, binary.BytesToString(b)),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
if err == nil && resp.StatusCode == http.StatusOK {
|
||||||
|
msg = append(msg, message.Image(result.Header.Thumbnail))
|
||||||
|
} else {
|
||||||
|
msg = append(msg, message.Image(pic))
|
||||||
|
}
|
||||||
|
msg = append(msg, message.Text("\n图源: ", result.Header.IndexName, binary.BytesToString(b)))
|
||||||
|
ctx.Send(msg)
|
||||||
|
if s > 0.8 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.SendChain(message.Text("请私聊发送 设置 saucenao api key [apikey] 以启用 saucenao 搜图, key 请前往 https://saucenao.com/user.php?page=search-api 获取"))
|
ctx.SendChain(message.Text("请私聊发送 设置 saucenao api key [apikey] 以启用 saucenao 搜图, key 请前往 https://saucenao.com/user.php?page=search-api 获取"))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user