1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

feat: face map generate

This commit is contained in:
wdvxdr 2021-03-09 21:59:51 +08:00
parent c04b18af70
commit d0b3993934
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6
4 changed files with 308 additions and 267 deletions

View File

@ -9,6 +9,9 @@ import (
"github.com/Mrs4s/MiraiGo/client/pb/msg"
)
//todo: github actions
//go:generate go run generate.go
type TextElement struct {
Content string
}
@ -62,7 +65,6 @@ type FriendImageElement struct {
type FaceElement struct {
Index int32
NewSysFace bool
Name string
}
@ -208,14 +210,6 @@ func NewGroupImage(id string, md5 []byte, fid int64, size, width, height, imageT
func NewFace(index int32) *FaceElement {
name := faceMap[int(index)]
if name == "" {
name = newSysFaceMap[int(index)]
if name != "" {
return &FaceElement{
Index: index,
NewSysFace: true,
Name: name,
}
}
name = "未知表情"
}
return &FaceElement{
@ -367,260 +361,3 @@ func (e *MusicShareElement) Type() ElementType {
func (e *RedBagElement) Type() ElementType {
return RedBag
}
var faceMap = map[int]string{
14: "微笑",
1: "撇嘴",
2: "色",
3: "发呆",
4: "得意",
5: "流泪",
6: "害羞",
7: "闭嘴",
8: "睡",
9: "大哭",
10: "尴尬",
11: "发怒",
12: "调皮",
13: "呲牙",
0: "惊讶",
15: "难过",
16: "酷",
96: "冷汗",
18: "抓狂",
19: "吐",
20: "偷笑",
21: "可爱",
22: "白眼",
23: "傲慢",
24: "饥饿",
25: "困",
26: "惊恐",
27: "流汗",
28: "憨笑",
29: "大兵",
30: "奋斗",
31: "咒骂",
32: "疑问",
33: "嘘",
34: "晕",
35: "折磨",
36: "衰",
37: "骷髅",
38: "敲打",
39: "再见",
97: "擦汗",
98: "抠鼻",
99: "鼓掌",
100: "糗大了",
101: "坏笑",
102: "左哼哼",
103: "右哼哼",
104: "哈欠",
105: "鄙视",
106: "委屈",
107: "快哭了",
108: "阴险",
305: "右亲亲",
109: "左亲亲",
110: "吓",
111: "可怜",
172: "眨眼睛",
182: "笑哭",
179: "doge",
173: "泪奔",
174: "无奈",
212: "托腮",
175: "卖萌",
178: "斜眼笑",
177: "喷血",
180: "惊喜",
181: "骚扰",
176: "小纠结",
183: "我最美",
// newSysFaceMap
192: "红包",
137: "嗨皮牛耶",
138: "灯笼",
136: "双喜",
// newSysFaceMap
112: "菜刀",
89: "西瓜",
113: "啤酒",
114: "篮球",
115: "乒乓",
171: "茶",
60: "咖啡",
61: "饭",
46: "猪头",
63: "玫瑰",
64: "凋谢",
116: "示爱",
66: "爱心",
67: "心碎",
53: "蛋糕",
54: "闪电",
55: "炸弹",
56: "刀",
145: "祈祷",
57: "足球",
117: "瓢虫",
59: "便便",
75: "月亮",
74: "太阳",
69: "礼物",
49: "拥抱",
76: "强",
77: "弱",
78: "握手",
79: "胜利",
118: "抱拳",
119: "勾引",
120: "拳头",
121: "差劲",
122: "爱你",
123: "NO",
124: "OK",
42: "爱情",
85: "飞吻",
43: "跳跳",
41: "发抖",
86: "怄火",
125: "转圈",
126: "磕头",
127: "回头",
128: "跳绳",
129: "挥手",
130: "激动",
131: "街舞",
132: "献吻",
133: "左太极",
134: "右太极",
140: "K歌",
144: "喝彩",
146: "爆筋",
147: "棒棒糖",
148: "喝奶",
151: "飞机",
158: "钞票",
168: "药",
169: "手枪",
188: "蛋",
184: "河蟹",
185: "羊驼",
190: "菊花",
187: "幽灵",
193: "大笑",
194: "不开心",
197: "冷漠",
198: "呃",
199: "好棒",
200: "拜托",
201: "点赞",
202: "无聊",
203: "托脸",
204: "吃",
205: "送花",
206: "害怕",
207: "花痴",
208: "小样儿",
210: "飙泪",
211: "我不看",
// newSysFaceMap
}
var newSysFaceMap = map[int]string{
245: "加油必胜",
246: "加油抱抱",
247: "口罩护体",
260: "搬砖中",
261: "忙到飞起",
262: "脑阔疼",
263: "沧桑",
264: "捂脸",
265: "辣眼睛",
266: "哦呦",
267: "头秃",
268: "问号脸",
269: "暗中观察",
270: "emm",
271: "吃瓜",
272: "呵呵哒",
277: "汪汪",
307: "牛转钱坤",
306: "牛气冲天",
281: "无眼笑",
282: "敬礼",
283: "狂笑",
284: "面无表情",
285: "摸鱼",
293: "摸锦鲤",
286: "魔鬼笑",
287: "哦",
288: "请",
289: "睁眼",
294: "期待",
295: "拿到红包",
296: "真好",
297: "拜谢",
298: "元宝",
299: "牛啊",
300: "胖三斤",
301: "好闪",
303: "右拜年",
302: "左拜年",
304: "红包包",
273: "我酸了",
274: "太南了",
308: "求红包",
309: "谢红包",
310: "新年烟花",
290: "敲开心",
291: "震惊",
292: "让我康康",
278: "汗",
279: "打脸",
280: "击掌",
242: "头撞击",
243: "甩头",
244: "扔狗",
215: "糊脸",
237: "偷看",
226: "拍桌",
214: "啵啵",
217: "扯一扯",
240: "喷脸",
216: "拍头",
218: "舔一舔",
229: "干杯",
238: "扇脸",
219: "蹭一蹭",
225: "撩一撩",
231: "哼",
233: "掐一掐",
221: "顶呱呱",
222: "抱抱",
239: "原谅",
232: "佛系",
220: "拽炸天",
235: "颤抖",
241: "生日快乐",
230: "嘲讽",
224: "开枪",
236: "啃头",
228: "恭喜",
234: "惊呆",
223: "暴击",
227: "拍手",
276: "辣椒酱", // 疑似删除
}

244
message/face.go Normal file
View File

@ -0,0 +1,244 @@
// Code generated by message/generate.go DO NOT EDIT.
package message
var faceMap = map[int]string{
14: "微笑",
1: "撇嘴",
2: "色",
3: "发呆",
4: "得意",
5: "流泪",
6: "害羞",
7: "闭嘴",
8: "睡",
9: "大哭",
10: "尴尬",
11: "发怒",
12: "调皮",
13: "呲牙",
0: "惊讶",
15: "难过",
16: "酷",
96: "冷汗",
18: "抓狂",
19: "吐",
20: "偷笑",
21: "可爱",
22: "白眼",
23: "傲慢",
24: "饥饿",
25: "困",
26: "惊恐",
27: "流汗",
28: "憨笑",
29: "悠闲",
30: "奋斗",
31: "咒骂",
32: "疑问",
33: "嘘",
34: "晕",
35: "折磨",
36: "衰",
37: "骷髅",
38: "敲打",
39: "再见",
97: "擦汗",
98: "抠鼻",
99: "鼓掌",
100: "糗大了",
101: "坏笑",
102: "左哼哼",
103: "右哼哼",
104: "哈欠",
105: "鄙视",
106: "委屈",
107: "快哭了",
108: "阴险",
305: "右亲亲",
109: "左亲亲",
110: "吓",
111: "可怜",
172: "眨眼睛",
182: "笑哭",
179: "doge",
173: "泪奔",
174: "无奈",
212: "托腮",
175: "卖萌",
178: "斜眼笑",
177: "喷血",
180: "惊喜",
181: "骚扰",
176: "小纠结",
183: "我最美",
245: "加油必胜",
246: "加油抱抱",
247: "口罩护体",
260: "搬砖中",
261: "忙到飞起",
262: "脑阔疼",
263: "沧桑",
264: "捂脸",
265: "辣眼睛",
266: "哦哟",
267: "头秃",
268: "问号脸",
269: "暗中观察",
270: "emm",
271: "吃瓜",
272: "呵呵哒",
277: "汪汪",
307: "喵喵",
306: "牛气冲天",
281: "无眼笑",
282: "敬礼",
283: "狂笑",
284: "面无表情",
285: "摸鱼",
293: "摸锦鲤",
286: "魔鬼笑",
287: "哦",
288: "请",
289: "睁眼",
294: "期待",
295: "拿到红包",
296: "真好",
297: "拜谢",
298: "元宝",
299: "牛啊",
300: "胖三斤",
301: "好闪",
303: "右拜年",
302: "左拜年",
304: "红包包",
49: "拥抱",
66: "爱心",
63: "玫瑰",
64: "凋谢",
187: "幽灵",
146: "爆筋",
116: "示爱",
67: "心碎",
60: "咖啡",
185: "羊驼",
192: "红包",
137: "鞭炮",
138: "灯笼",
136: "双喜",
76: "赞",
124: "OK",
118: "抱拳",
78: "握手",
119: "勾引",
79: "胜利",
120: "拳头",
121: "差劲",
77: "踩",
122: "爱你",
123: "NO",
201: "点赞",
203: "托脸",
204: "吃",
202: "无聊",
200: "拜托",
194: "不开心",
193: "大笑",
197: "冷漠",
211: "我不看",
210: "飙泪",
198: "呃",
199: "好棒",
207: "花痴",
205: "送花",
206: "害怕",
208: "小样儿",
308: "求红包",
309: "谢红包",
310: "新年烟花",
290: "敲开心",
291: "震惊",
292: "让我康康",
226: "拍桌",
215: "糊脸",
237: "偷看",
214: "啵啵",
235: "颤抖",
222: "抱抱",
217: "扯一扯",
221: "顶呱呱",
225: "撩一撩",
241: "生日快乐",
227: "拍手",
238: "扇脸",
240: "喷脸",
229: "干杯",
216: "拍头",
218: "舔一舔",
233: "掐一掐",
219: "蹭一蹭",
244: "扔狗",
232: "佛系",
243: "甩头",
223: "暴击",
279: "打脸",
280: "击掌",
231: "哼",
224: "开枪",
278: "汗",
236: "啃头",
228: "恭喜",
220: "拽炸天",
239: "原谅",
242: "头撞击",
230: "嘲讽",
234: "惊呆",
273: "我酸了",
75: "月亮",
74: "太阳",
46: "猪头",
112: "菜刀",
56: "刀",
169: "手枪",
171: "茶",
59: "便便",
144: "喝彩",
147: "棒棒糖",
89: "西瓜",
61: "饭",
148: "喝奶",
274: "太南了",
113: "啤酒",
140: "K歌",
53: "蛋糕",
188: "蛋",
55: "炸弹",
184: "河蟹",
158: "钞票",
54: "闪电",
69: "礼物",
190: "菊花",
151: "飞机",
145: "祈祷",
117: "瓢虫",
168: "药",
114: "篮球",
115: "乒乓",
57: "足球",
41: "发抖",
125: "转圈",
42: "爱情",
43: "跳跳",
86: "怄火",
129: "挥手",
85: "飞吻",
126: "磕头",
128: "跳绳",
130: "激动",
127: "回头",
132: "献吻",
134: "右太极",
133: "左太极",
131: "街舞",
276: "辣椒酱",
}

60
message/generate.go Normal file
View File

@ -0,0 +1,60 @@
// +build ignore
package main
import (
"archive/zip"
"bytes"
"encoding/json"
"go/format"
"html/template"
"io"
"net/http"
"os"
"strings"
)
const faceDownloadUrl = `https://downv6.qq.com/qqface/config/face_config_8.5.0.15.zip?mType=Other` //? 好像是会自动更新的
type config struct {
SystemFace []face `json:"sysface"`
}
type face struct {
QSid string `json:"QSid"`
QDes string `json:"QDes"`
}
const codeTemplate = `// Code generated by message/generate.go DO NOT EDIT.
package message
var faceMap = map[int]string{
{{range .SystemFace}} {{.QSid}}: "{{.QDes}}",
{{end}}
}
`
func main() {
f, _ := os.OpenFile("face.go", os.O_WRONLY|os.O_CREATE|os.O_SYNC|os.O_TRUNC, 0755)
defer func() { _ = f.Close() }()
resp, err := http.Get(faceDownloadUrl)
if err != nil {
panic(err)
}
defer resp.Body.Close()
rsp, _ := io.ReadAll(resp.Body)
reader, _ := zip.NewReader(bytes.NewReader(rsp), resp.ContentLength)
file, _ := reader.Open("face_config.json")
data, _ := io.ReadAll(file)
faceConfig := config{}
_ = json.Unmarshal(data, &faceConfig)
for i := range faceConfig.SystemFace {
faceConfig.SystemFace[i].QDes = strings.TrimPrefix(faceConfig.SystemFace[i].QDes, "/")
}
tmpl, _ := template.New("template").Parse(codeTemplate)
buffer := &bytes.Buffer{}
_ = tmpl.Execute(buffer, &faceConfig)
source, _ := format.Source(buffer.Bytes())
f.Write(source)
}

View File

@ -23,7 +23,7 @@ func (e *TextElement) Pack() (r []*msg.Elem) {
func (e *FaceElement) Pack() (r []*msg.Elem) {
r = []*msg.Elem{}
if e.NewSysFace {
if e.Index >= 260 {
elem := &msg.MsgElemInfoServtype33{
Index: proto.Uint32(uint32(e.Index)),
Text: []byte("/" + e.Name),