diff --git a/go.mod b/go.mod index 5805c448f4..5ea0a92aa5 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/FloatTech/AnimeAPI v1.4.1-0.20220610045824-90f281c6eece github.com/FloatTech/sqlite v0.2.1 github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c - github.com/FloatTech/zbputils v1.4.1-0.20220604095022-69b69d618e08 + github.com/FloatTech/zbputils v1.4.1-0.20220610052426-fd549a8c7867 github.com/antchfx/htmlquery v1.2.4 github.com/corona10/goimagehash v1.0.3 github.com/fogleman/gg v1.3.0 diff --git a/go.sum b/go.sum index fcdcb45631..bf2342127c 100644 --- a/go.sum +++ b/go.sum @@ -14,8 +14,8 @@ github.com/FloatTech/sqlite v0.2.1 h1:9t6Me48XJJCIoPy4nLRvcdhcVKfT0c2lilp7SEKROG github.com/FloatTech/sqlite v0.2.1/go.mod h1:6NfHRzqOo9RWeMJEoAQVuo51Omd5LFNxCNQhMF02/9U= github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c h1:1LhskkE5oP1Y2Vi9f4/s5Lns5M5vIzvGAAwJ4z23h+o= github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c/go.mod h1:x57TwTlC6zGhs+HHzWATD0sabyoDpSt8b7OzV3Mvrdc= -github.com/FloatTech/zbputils v1.4.1-0.20220604095022-69b69d618e08 h1:5L+ucTyGTgEop0lUIZtGcih4Ro/quen2BxhjSHhv+us= -github.com/FloatTech/zbputils v1.4.1-0.20220604095022-69b69d618e08/go.mod h1:xlw8tTnwv+pglm2WZTDr/9Gl767ALYBguwsqibDqYpI= +github.com/FloatTech/zbputils v1.4.1-0.20220610052426-fd549a8c7867 h1:bGCxabeJfHZDG2jw63fguzt/y8cyWZpDjjyxQ8rNJNQ= +github.com/FloatTech/zbputils v1.4.1-0.20220610052426-fd549a8c7867/go.mod h1:xlw8tTnwv+pglm2WZTDr/9Gl767ALYBguwsqibDqYpI= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c h1:cNPOdTNiVwxLpROLjXCgbIPvdkE+BwvxDvgmdYmWx6Q= github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c/go.mod h1:KqZzu7slNKROh3TSYEH/IUMG6f4M+1qubZ5e52QypsE= diff --git a/plugin/image_finder/keyword.go b/plugin/image_finder/keyword.go index 80c0664bd4..addd3a9168 100644 --- a/plugin/image_finder/keyword.go +++ b/plugin/image_finder/keyword.go @@ -7,6 +7,7 @@ import ( "math/rand" "net/http" "net/url" + "reflect" "strings" "github.com/lucas-clemente/quic-go/http3" @@ -17,6 +18,7 @@ import ( "github.com/FloatTech/AnimeAPI/pixiv" ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/pool" @@ -51,9 +53,8 @@ type resultjson struct { } `json:"statistic"` Image string `json:"image"` } `json:"illusts"` - Scores []float64 `json:"scores"` - Highlight []string `json:"highlight"` - HasNext bool `json:"has_next"` + Scores []float64 `json:"scores"` + HasNext bool `json:"has_next"` } `json:"data"` } @@ -71,7 +72,8 @@ func init() { return } rannum := rand.Intn(len(soutujson.Data.Illusts)) - illust, err := pixiv.Works(soutujson.Data.Illusts[rannum].ID) + il := soutujson.Data.Illusts[rannum] + illust, err := pixiv.Works(il.ID) if err != nil { ctx.SendChain(message.Text("ERROR:", err)) return @@ -83,7 +85,19 @@ func init() { err = pool.SendImageFromPool(n, f, func() error { // 下载图片 return illust.DownloadToCache(0) - }, ctxext.SendFakeForwardToGroup(ctx), ctxext.GetFirstMessageInForward(ctx)) + }, ctxext.SendFakeForwardToGroup(ctx, + message.Text( + il.Width, "x", il.Height, "\n", + "标题: ", il.Title, "\n", + "副标题: ", il.AltTitle, "\n", + "ID: ", il.ID, + "简介: ", il.Description, "\n", + "画师: ", illust.UserName, "\n", + "画师ID: ", illust.UserId, "\n", + "分级:", il.Sanity, "\n", + printtags(reflect.ValueOf(&il.Tags)), + ), + ), ctxext.GetFirstMessageInForward(ctx)) if err != nil { ctx.SendChain(message.Text("ERROR:", err)) return @@ -109,3 +123,21 @@ func soutuapi(keyword string) (r resultjson, err error) { } return } + +func printtags(r reflect.Value) string { + tags := r.Elem() + s := binary.BytesToString(binary.NewWriterF(func(w *binary.Writer) { + for i := 0; i < tags.Len(); i++ { + tag := tags.Index(i) + _ = w.WriteByte('#') + w.WriteString(tag.Field(0).String()) + w.WriteString(" (") + w.WriteString(tag.Field(1).String()) + w.WriteString(")\n") + } + })) + if len(s) > 0 { + s = s[:len(s)-1] + } + return s +}