mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 13:59:39 +08:00
52 lines
1.7 KiB
Go
52 lines
1.7 KiB
Go
// Package deepdanbooru 二次元图片标签识别
|
|
package deepdanbooru
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"strings"
|
|
|
|
"github.com/FloatTech/floatbox/file"
|
|
"github.com/FloatTech/imgfactory"
|
|
ctrl "github.com/FloatTech/zbpctrl"
|
|
"github.com/FloatTech/zbputils/control"
|
|
"github.com/FloatTech/zbputils/ctxext"
|
|
zero "github.com/wdvxdr1123/ZeroBot"
|
|
"github.com/wdvxdr1123/ZeroBot/message"
|
|
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
|
)
|
|
|
|
func init() { // 插件主体
|
|
engine := control.Register("danbooru", &ctrl.Options[*zero.Ctx]{
|
|
DisableOnDefault: false,
|
|
Brief: "二次元图片标签识别",
|
|
Help: "- 鉴赏图片[图片]",
|
|
PrivateDataFolder: "danbooru",
|
|
})
|
|
|
|
cachefolder := engine.DataFolder()
|
|
|
|
// 上传一张图进行评价
|
|
engine.OnKeywordGroup([]string{"鉴赏图片"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true).
|
|
Handle(func(ctx *zero.Ctx) {
|
|
ctx.SendChain(message.Text("少女祈祷中..."))
|
|
for _, url := range ctx.State["image_url"].([]string) {
|
|
t, st, err := tagurl("", url)
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
digest := md5.Sum(helper.StringToBytes(url))
|
|
f := cachefolder + hex.EncodeToString(digest[:])
|
|
if file.IsNotExist(f) {
|
|
_ = imgfactory.SavePNG2Path(f, t)
|
|
}
|
|
m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image("file:///"+file.BOTPATH+"/"+f))}
|
|
m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Text("tags: ", strings.Join(st.tseq, ","))))
|
|
if id := ctx.Send(m).ID(); id == 0 {
|
|
ctx.SendChain(message.Text("ERROR: 可能被风控或下载图片用时过长,请耐心等待"))
|
|
}
|
|
}
|
|
})
|
|
}
|