Skip to content

Commit 606aec4

Browse files
committed
🚚 🎉 📝 合并 gif
1 parent 7f0f211 commit 606aec4

File tree

10 files changed

+436
-13
lines changed

10 files changed

+436
-13
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地
122122
- [x] 抽老婆[@xxx]
123123
- **AIWife** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_aiwife"`
124124
- [x] waifu|随机waifu(从[100000个AI生成的waifu](https://www.thiswaifudoesnotexist.net/)中随机一位)
125-
- **gif** `import _ "github.com/tdf1939/ZeroBot-Plugin-Gif/plugin_gif"`
125+
- **gif** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_gif"`
126126
- [x][@xxx]
127127
- [x][@xxx]
128128
- [x][@xxx]

go.mod

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ go 1.17
44

55
require (
66
github.com/FloatTech/AnimeAPI v1.2.0
7-
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.6
8-
github.com/FloatTech/zbpctrl v1.2.3-add1
9-
github.com/FloatTech/zbputils v1.2.3-add1
7+
github.com/FloatTech/zbpctrl v1.2.3-add2
8+
github.com/FloatTech/zbputils v1.2.3-add2
109
github.com/antchfx/htmlquery v1.2.4
1110
github.com/corona10/goimagehash v1.0.3
1211
github.com/fogleman/gg v1.3.0
@@ -26,7 +25,6 @@ require (
2625
)
2726

2827
require (
29-
github.com/FloatTech/imgfactory v0.1.1 // indirect
3028
github.com/antchfx/xpath v1.2.0 // indirect
3129
github.com/disintegration/imaging v1.6.2 // indirect
3230
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 // indirect

go.sum

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
github.com/FloatTech/AnimeAPI v1.2.0 h1:1P6hOEqNOB8EeC7PD5LuIRL9aWRKNVjKF6kP8X1ZYmI=
22
github.com/FloatTech/AnimeAPI v1.2.0/go.mod h1:P2pJSBhflFXJsJPUwhHt13obMVBRc9WJxEKx4bJ+11Q=
3-
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.6 h1:canagsXdWdQWTRwNq5U80dAc22hMARTICBxssUtOxhI=
4-
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.6/go.mod h1:umANZgKejUlyBT7c6OfaF8pmnf24QHgqhja94iSpQW4=
53
github.com/FloatTech/bot-manager v1.0.0/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
6-
github.com/FloatTech/imgfactory v0.1.1 h1:ooL2+fV8yrMhv1ShGGKsN0Rm/flWoKnvqXaUD+dC3DQ=
7-
github.com/FloatTech/imgfactory v0.1.1/go.mod h1:ThDALab8aOuU6KVYESVWFqmjcqtm03e0SvGlTw6s+aw=
8-
github.com/FloatTech/zbpctrl v1.2.3-add1 h1:YkLR95p4SOCv6E2EnQ0qFO1O0mcBi+9n0gRhPUVJddA=
9-
github.com/FloatTech/zbpctrl v1.2.3-add1/go.mod h1:70cC4XawE8bpbYz/OFA6d6uecK8jTc61pUCY5eXMaC0=
10-
github.com/FloatTech/zbputils v1.2.3-add1 h1:gzLw4aa7HhVB7cRUIcJUdFoM/fqxy6yEOXwtt5nw+40=
4+
github.com/FloatTech/zbpctrl v1.2.3-add2 h1:lvBIQOo22RPOrc+ZgzmcyGEuhV36NrKMOemZN/UOoig=
5+
github.com/FloatTech/zbpctrl v1.2.3-add2/go.mod h1:s4ux9AgS8m+30ELebKOf7TpMtZEPJpk8ll3CSv0Oz5s=
116
github.com/FloatTech/zbputils v1.2.3-add1/go.mod h1:+NZ6tqt9lR2ilyiIh/+90tZlSW2pXx0IyOFlpOiqadE=
7+
github.com/FloatTech/zbputils v1.2.3-add2 h1:b+W7+cWriDVcUXh6NLnQ/z6hkrY+FvrJuoAowsUaFrQ=
8+
github.com/FloatTech/zbputils v1.2.3-add2/go.mod h1:OXX382tuGcev9XfWG9aYE+OmbvEKGCXfuM+ZmW9BTLw=
129
github.com/Mrs4s/MiraiGo v0.0.0-20211120033824-43b23f4e6fcb h1:Rkj28fqIwGx/EgBzRYtpmJRfH6wqVn7cNdc7aJ0QE4M=
1310
github.com/Mrs4s/MiraiGo v0.0.0-20211120033824-43b23f4e6fcb/go.mod h1:imVKbfKqqeit+C/eaWGb4MKQ3z3gN6pRpBU5RMtp5so=
1411
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828

2929
// 娱乐类
3030
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin_wtf" // 鬼东西
31-
_ "github.com/FloatTech/ZeroBot-Plugin-Gif" // 制图
3231
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_false" // 服务器监控
3332
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_book_review" // 哀伤雪刃吧推书记录
3433
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_cangtoushi" // 藏头诗
@@ -39,6 +38,7 @@ import (
3938
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_curse" // 骂人
4039
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_fortune" // 运势
4140
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_funny" // 笑话
41+
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_gif" // 制图
4242
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_hs" // 炉石
4343
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_juejuezi" // 绝绝子生成器
4444
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_minecraft" // MCSManager

plugin_gif/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# ZeroBot-Plugin-Gif
2+
[ZeroBot QQ机器人](https://github.com/wdvxdr1123/ZeroBot)插件,可以制作各种沙雕gif图
3+
> 素材包地址: https://codechina.csdn.net/u011570312/imagematerials
4+
5+
## 触发方式
6+
1. [指令词]+[qq号] 如:爬123456
7+
2. [指令词]+[图片] 如:爬[图片]
8+
3. [指令词]+[艾特] 如:爬@小H
9+
10+
## 指令列表
11+
- [x]
12+
- [x]
13+
- [x]
14+
- [x]
15+
- [x]
16+
- [x]
17+
- [x]
18+
- [x]
19+
- [x]
20+
- [x]
21+
- [x]
22+
- [x] 灰度
23+
- [x] 上翻
24+
- [x] 下翻
25+
- [x] 左翻
26+
- [x] 右翻
27+
- [x] 反色
28+
- [x] 倒放
29+
- [x] 浮雕
30+
- [x] 打码
31+
- [x] 负片

plugin_gif/context.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package plugin_gif
2+
3+
import (
4+
"bufio"
5+
"io"
6+
"net/http"
7+
"os"
8+
"strconv"
9+
"strings"
10+
11+
"github.com/sirupsen/logrus"
12+
)
13+
14+
type context struct {
15+
usrdir string
16+
headimgsdir []string
17+
}
18+
19+
func dlchan(name string, c *chan *string) {
20+
target := datapath + `materials/` + name
21+
_, err := os.Stat(target)
22+
if err != nil {
23+
download(`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/`+name, target)
24+
} else {
25+
logrus.Debugln("[gif] dl", name, "exists")
26+
}
27+
*c <- &target
28+
}
29+
30+
func dlblock(name string) string {
31+
target := datapath + `materials/` + name
32+
_, err := os.Stat(target)
33+
if err != nil {
34+
download(`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/`+name, target)
35+
}
36+
return target
37+
}
38+
39+
func dlrange(prefix string, suffix string, end int) *[]chan *string {
40+
c := make([]chan *string, end)
41+
for i := range c {
42+
c[i] = make(chan *string)
43+
go dlchan(prefix+strconv.Itoa(i)+suffix, &c[i])
44+
}
45+
return &c
46+
}
47+
48+
// 新的上下文
49+
func newContext(user int64) *context {
50+
c := new(context)
51+
c.usrdir = datapath + "users/" + strconv.FormatInt(user, 10) + `/`
52+
os.MkdirAll(c.usrdir, 0755)
53+
c.headimgsdir = make([]string, 2)
54+
c.headimgsdir[0] = c.usrdir + "0.gif"
55+
c.headimgsdir[1] = c.usrdir + "1.gif"
56+
return c
57+
}
58+
59+
// 下载图片
60+
func download(url, dlpath string) error {
61+
// 创建目录
62+
var List = strings.Split(dlpath, `/`)
63+
err := os.MkdirAll(strings.TrimSuffix(dlpath, List[len(List)-1]), 0755)
64+
if err != nil {
65+
logrus.Errorln("[gif] mkdir err:", err)
66+
return err
67+
}
68+
res, err := http.Get(url)
69+
if err != nil {
70+
logrus.Errorln("[gif] http get err:", err)
71+
return err
72+
}
73+
// 获得get请求响应的reader对象
74+
reader := bufio.NewReaderSize(res.Body, 32*1024)
75+
// 创建文件
76+
file, err := os.Create(dlpath)
77+
if err != nil {
78+
logrus.Errorln("[gif] create file err:", err)
79+
return err
80+
}
81+
// 获得文件的writer对象
82+
writer := bufio.NewWriter(file)
83+
written, err := io.Copy(writer, reader)
84+
if err != nil {
85+
logrus.Errorln("[gif] copy err:", err)
86+
return err
87+
}
88+
res.Body.Close()
89+
logrus.Debugln("[gif] dl len:", written)
90+
return nil
91+
}

plugin_gif/gif.go

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
package plugin_gif
2+
3+
import (
4+
"image"
5+
6+
"github.com/FloatTech/zbputils/img"
7+
)
8+
9+
// 摸
10+
func (cc *context) mo() string {
11+
name := cc.usrdir + `摸.gif`
12+
c := dlrange(`mo/`, `.png`, 5)
13+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
14+
mo := []*image.NRGBA{
15+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 80, 80, 32, 32).Im,
16+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 70, 90, 42, 22).Im,
17+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 75, 85, 37, 27).Im,
18+
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottom(tou, 85, 75, 27, 37).Im,
19+
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottom(tou, 90, 70, 22, 42).Im,
20+
}
21+
img.SaveGif(img.MergeGif(1, mo), name)
22+
return "file:///" + name
23+
}
24+
25+
// 搓
26+
func (cc *context) cuo() string {
27+
name := cc.usrdir + `搓.gif`
28+
c := dlrange(`cuo/`, `.png`, 5)
29+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 110, 110).Circle(0).Im
30+
m1 := img.Rotate(tou, 72, 0, 0)
31+
m2 := img.Rotate(tou, 144, 0, 0)
32+
m3 := img.Rotate(tou, 216, 0, 0)
33+
m4 := img.Rotate(tou, 288, 0, 0)
34+
cuo := []*image.NRGBA{
35+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottomC(tou, 0, 0, 75, 130).Im,
36+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottomC(m1.Im, 0, 0, 75, 130).Im,
37+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottomC(m2.Im, 0, 0, 75, 130).Im,
38+
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottomC(m3.Im, 0, 0, 75, 130).Im,
39+
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottomC(m4.Im, 0, 0, 75, 130).Im,
40+
}
41+
img.SaveGif(img.MergeGif(5, cuo), name)
42+
return "file:///" + name
43+
}
44+
45+
// 敲
46+
func (cc *context) qiao() string {
47+
name := cc.usrdir + `敲.gif`
48+
c := dlrange(`qiao/`, `.png`, 2)
49+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 40, 40).Circle(0).Im
50+
qiao := []*image.NRGBA{
51+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 40, 33, 57, 52).Im,
52+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 38, 36, 58, 50).Im,
53+
}
54+
img.SaveGif(img.MergeGif(1, qiao), name)
55+
return "file:///" + name
56+
}
57+
58+
// 吃
59+
func (cc *context) chi() string {
60+
name := cc.usrdir + `吃.gif`
61+
c := dlrange(`chi/`, `.png`, 3)
62+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 32, 32).Im
63+
chi := []*image.NRGBA{
64+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
65+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
66+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
67+
}
68+
img.SaveGif(img.MergeGif(1, chi), name)
69+
return "file:///" + name
70+
}
71+
72+
// 蹭
73+
func (cc *context) ceng() string {
74+
name := cc.usrdir + `蹭.gif`
75+
c := dlrange(`ceng/`, `.png`, 6)
76+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 100, 100).Circle(0).Im
77+
tou2 := img.LoadFirstFrame(cc.headimgsdir[1], 100, 100).Circle(0).Im
78+
ceng := []*image.NRGBA{
79+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 75, 77, 40, 88).InsertUp(tou2, 77, 103, 102, 81).Im,
80+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 75, 77, 46, 100).InsertUp(img.Rotate(tou2, 10, 62, 127).Im, 0, 0, 92, 40).Im,
81+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertUp(tou, 75, 77, 67, 99).InsertUp(tou2, 76, 117, 90, 8).Im,
82+
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertUp(tou, 75, 77, 52, 83).InsertUp(img.Rotate(tou2, -40, 94, 94).Im, 0, 0, 53, -20).Im,
83+
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertUp(tou, 75, 77, 56, 110).InsertUp(img.Rotate(tou2, -66, 132, 80).Im, 0, 0, 78, 40).Im,
84+
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertUp(tou, 75, 77, 62, 102).InsertUp(tou2, 71, 100, 110, 94).Im,
85+
}
86+
img.SaveGif(img.MergeGif(8, ceng), name)
87+
return "file:///" + name
88+
}
89+
90+
// 啃
91+
func (cc *context) ken() string {
92+
name := cc.usrdir + `啃.gif`
93+
c := dlrange(`ken/`, `.png`, 16)
94+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 100, 100).Im
95+
ken := []*image.NRGBA{
96+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 90, 90, 105, 150).Im,
97+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 90, 83, 96, 172).Im,
98+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 90, 90, 106, 148).Im,
99+
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottom(tou, 88, 88, 97, 167).Im,
100+
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottom(tou, 90, 85, 89, 179).Im,
101+
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertBottom(tou, 90, 90, 106, 151).Im,
102+
img.LoadFirstFrame(*<-(*c)[6], 0, 0).Im,
103+
img.LoadFirstFrame(*<-(*c)[7], 0, 0).Im,
104+
img.LoadFirstFrame(*<-(*c)[8], 0, 0).Im,
105+
img.LoadFirstFrame(*<-(*c)[9], 0, 0).Im,
106+
img.LoadFirstFrame(*<-(*c)[10], 0, 0).Im,
107+
img.LoadFirstFrame(*<-(*c)[11], 0, 0).Im,
108+
img.LoadFirstFrame(*<-(*c)[12], 0, 0).Im,
109+
img.LoadFirstFrame(*<-(*c)[13], 0, 0).Im,
110+
img.LoadFirstFrame(*<-(*c)[14], 0, 0).Im,
111+
img.LoadFirstFrame(*<-(*c)[15], 0, 0).Im,
112+
}
113+
img.SaveGif(img.MergeGif(7, ken), name)
114+
return "file:///" + name
115+
}
116+
117+
// 拍
118+
func (cc *context) pai() string {
119+
name := cc.usrdir + `拍.gif`
120+
c := dlrange(`pai/`, `.png`, 2)
121+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 30, 30).Circle(0).Im
122+
pai := []*image.NRGBA{
123+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 0, 0, 1, 47).Im,
124+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 0, 0, 1, 67).Im,
125+
}
126+
img.SaveGif(img.MergeGif(1, pai), name)
127+
return "file:///" + name
128+
}
129+
130+
// 冲
131+
func (cc *context) chong() string {
132+
name := cc.usrdir + `冲.gif`
133+
c := dlrange(`xqe/`, `.png`, 2)
134+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
135+
chong := []*image.NRGBA{
136+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 30, 30, 15, 53).Im,
137+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 30, 30, 40, 53).Im,
138+
}
139+
img.SaveGif(img.MergeGif(1, chong), name)
140+
return "file:///" + name
141+
}
142+
143+
// 丢
144+
func (cc *context) diu() string {
145+
name := cc.usrdir + `丢.gif`
146+
c := dlrange(`diu/`, `.png`, 8)
147+
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
148+
diu := []*image.NRGBA{
149+
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 32, 32, 108, 36).Im,
150+
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 32, 32, 122, 36).Im,
151+
img.LoadFirstFrame(*<-(*c)[2], 0, 0).Im,
152+
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertUp(tou, 123, 123, 19, 129).Im,
153+
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Im,
154+
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertUp(tou, 32, 32, 280, 73).Im,
155+
img.LoadFirstFrame(*<-(*c)[6], 0, 0).InsertUp(tou, 35, 35, 259, 31).Im,
156+
img.LoadFirstFrame(*<-(*c)[7], 0, 0).InsertUp(tou, 175, 175, -50, 220).Im,
157+
}
158+
img.SaveGif(img.MergeGif(7, diu), name)
159+
return "file:///" + name
160+
}

plugin_gif/logo.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package plugin_gif
2+
3+
import (
4+
"strconv"
5+
"strings"
6+
)
7+
8+
func (c *context) prepareLogos(s ...string) {
9+
for i, v := range s {
10+
_, err := strconv.Atoi(v)
11+
if err != nil {
12+
download("https://gchat.qpic.cn/gchatpic_new//--"+strings.ToUpper(v)+"/0", c.usrdir+strconv.Itoa(i)+".gif")
13+
} else {
14+
download("http://q4.qlogo.cn/g?b=qq&nk="+v+"&s=640", c.usrdir+strconv.Itoa(i)+".gif")
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)