From 5d73216238f886058deb6ea0e6c7f36b93f8d123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 13 May 2022 13:08:02 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20saucenao=20reflect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/saucenao/searcher.go | 55 ++++++++++++------------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/plugin/saucenao/searcher.go b/plugin/saucenao/searcher.go index be1faa53..59eb309d 100644 --- a/plugin/saucenao/searcher.go +++ b/plugin/saucenao/searcher.go @@ -108,36 +108,15 @@ func init() { // 插件主体 engine.OnKeywordGroup([]string{"以图搜图", "搜索图片", "以图识图"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true). Handle(func(ctx *zero.Ctx) { // 开始搜索图片 - ctx.SendChain(message.Text("少女祈祷中......")) + ctx.SendChain(message.Text("少女祈祷中...")) for _, pic := range ctx.State["image_url"].([]string) { if saucenaocli != nil { resp, err := saucenaocli.FromURL(pic) if err == nil && resp.Count() > 0 { result := resp.First() - // 返回SauceNAO的结果 - source := "" - switch { - 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() + s, err := strconv.ParseFloat(result.Header.Similarity, 64) + if err == nil { + rr := reflect.ValueOf(&result.Data).Elem() b := binary.NewWriterF(func(w *binary.Writer) { r := rr.Type() for i := 0; i < r.NumField(); i++ { @@ -150,20 +129,22 @@ func init() { // 插件主体 } }) resp, err := http.Head(result.Header.Thumbnail) - if err == nil && resp.StatusCode == http.StatusOK { - ctx.SendChain( - message.Text("我有把握是这个!"), - message.Image(result.Header.Thumbnail), - message.Text("\n图源: ", source, binary.BytesToString(b)), - ) + var msg message.Message = make(message.Message, 0, 3) + if s > 0.8 { + msg = append(msg, message.Text("我有把握是这个!")) } else { - ctx.SendChain( - message.Text("我有把握是这个!"), - message.Image(pic), - message.Text("\n图源: ", source, binary.BytesToString(b)), - ) + msg = append(msg, message.Text("也许是这个?")) + } + 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 {