1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

Merge pull request #63 from wfjsw/patches/proper-flash-pic-support

proper flash pic support
This commit is contained in:
Mrs4s 2020-11-17 20:45:30 +08:00 committed by GitHub
commit 0a7e4ea557
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 17 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
.idea .idea
vendor/

View File

@ -2,10 +2,11 @@ package message
import ( import (
"fmt" "fmt"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/msg"
"strconv" "strconv"
"strings" "strings"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/msg"
) )
type TextElement struct { type TextElement struct {
@ -113,6 +114,12 @@ type RedBagElement struct {
Title string Title string
} }
// TODO: 总之就是非常傻逼
type GroupFlashImgElement struct {
ImageElement
}
type GroupFlashPicElement struct { type GroupFlashPicElement struct {
GroupImageElement GroupImageElement
} }
@ -122,6 +129,10 @@ type GroupShowPicElement struct {
EffectId int32 EffectId int32
} }
type FriendFlashImgElement struct {
ImageElement
}
type FriendFlashPicElement struct { type FriendFlashPicElement struct {
FriendImageElement FriendImageElement
} }
@ -238,6 +249,14 @@ func (e *ImageElement) Type() ElementType {
return Image return Image
} }
func (e *GroupFlashImgElement) Type() ElementType {
return Image
}
func (e *FriendFlashImgElement) Type() ElementType {
return Image
}
func (e *FaceElement) Type() ElementType { func (e *FaceElement) Type() ElementType {
return Face return Face
} }

View File

@ -2,16 +2,17 @@ package message
import ( import (
"crypto/md5" "crypto/md5"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/msg"
"github.com/Mrs4s/MiraiGo/utils"
"github.com/golang/protobuf/proto"
"github.com/tidwall/gjson"
"math" "math"
"reflect" "reflect"
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/msg"
"github.com/Mrs4s/MiraiGo/utils"
"github.com/golang/protobuf/proto"
"github.com/tidwall/gjson"
) )
type ( type (
@ -132,6 +133,9 @@ func (msg *PrivateMessage) ToString() (res string) {
res += e.Content res += e.Content
case *ImageElement: case *ImageElement:
res += "[Image:" + e.Filename + "]" res += "[Image:" + e.Filename + "]"
case *FriendFlashImgElement:
// NOTE: ignore other components
return "[Image (flash):" + e.Filename + "]"
case *FaceElement: case *FaceElement:
res += "[" + e.Name + "]" res += "[" + e.Name + "]"
case *AtElement: case *AtElement:
@ -168,6 +172,9 @@ func (msg *GroupMessage) ToString() (res string) {
res += "[" + e.Name + "]" res += "[" + e.Name + "]"
case *GroupImageElement: case *GroupImageElement:
res += "[Image: " + e.ImageId + "]" res += "[Image: " + e.ImageId + "]"
case *GroupFlashImgElement:
// NOTE: ignore other components
return "[Image (flash):" + e.Filename + "]"
case *AtElement: case *AtElement:
res += e.Display res += e.Display
case *RedBagElement: case *RedBagElement:
@ -488,20 +495,26 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
flash := &msg.MsgElemInfoServtype3{} flash := &msg.MsgElemInfoServtype3{}
_ = proto.Unmarshal(elem.CommonElem.PbElem, flash) _ = proto.Unmarshal(elem.CommonElem.PbElem, flash)
if flash.FlashTroopPic != nil { if flash.FlashTroopPic != nil {
res = append(res, &ImageElement{ res = append(res, &GroupFlashImgElement{
Filename: flash.FlashTroopPic.FilePath, ImageElement{
Size: flash.FlashTroopPic.Size, Filename: flash.FlashTroopPic.FilePath,
Width: flash.FlashTroopPic.Width, Size: flash.FlashTroopPic.Size,
Height: flash.FlashTroopPic.Height, Width: flash.FlashTroopPic.Width,
Md5: flash.FlashTroopPic.Md5, Height: flash.FlashTroopPic.Height,
Md5: flash.FlashTroopPic.Md5,
},
}) })
return res
} }
if flash.FlashC2CPic != nil { if flash.FlashC2CPic != nil {
res = append(res, &ImageElement{ res = append(res, &GroupFlashImgElement{
Filename: flash.FlashC2CPic.FilePath, ImageElement{
Size: flash.FlashC2CPic.FileLen, Filename: flash.FlashC2CPic.FilePath,
Md5: flash.FlashC2CPic.PicMd5, Size: flash.FlashC2CPic.FileLen,
Md5: flash.FlashC2CPic.PicMd5,
},
}) })
return res
} }
} }
} }
@ -560,6 +573,12 @@ func ToReadableString(m []IMessageElement) (r string) {
r += "/" + e.Name r += "/" + e.Name
case *GroupImageElement: case *GroupImageElement:
r += "[图片]" r += "[图片]"
// NOTE: flash pic is singular
// To be clarified
// case *GroupFlashImgElement:
// return "[闪照]"
// case *FriendFlashImgElement:
// return "[闪照]"
case *AtElement: case *AtElement:
r += e.Display r += e.Display
} }