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

client: avoid ReadAll in image ocr

This commit is contained in:
wdvxdr 2022-02-27 16:52:57 +08:00
parent ca4580dad5
commit 76539e425d
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6

View File

@ -1,8 +1,6 @@
package client
import (
"bytes"
"crypto/md5"
"encoding/hex"
"io"
"math/rand"
@ -211,7 +209,7 @@ func (c *QQClient) ImageOcr(img interface{}) (*OcrResponse, error) {
case *message.GroupImageElement:
url = e.Url
if b, err := utils.HTTPGetReadCloser(e.Url, ""); err == nil {
if url, err = c.uploadOcrImage(b); err != nil {
if url, err = c.uploadOcrImage(b, e.Size, e.Md5); err != nil {
url = e.Url
}
_ = b.Close()
@ -316,7 +314,7 @@ func (c *QQClient) buildGroupImageDownloadPacket(fileId, groupCode int64, fileMd
return c.uniPacket("ImgStore.GroupPicDown", payload)
}
func (c *QQClient) uploadOcrImage(img io.Reader) (string, error) {
func (c *QQClient) uploadOcrImage(img io.Reader, size int32, sum []byte) (string, error) {
r := make([]byte, 16)
rand.Read(r)
ext, _ := proto.Marshal(&highway2.CommFileExtReq{
@ -324,13 +322,11 @@ func (c *QQClient) uploadOcrImage(img io.Reader) (string, error) {
Uuid: binary.GenUUID(r),
})
h := md5.New()
buf, _ := io.ReadAll(io.TeeReader(img, h))
rsp, err := c.highwaySession.UploadBDH(highway.BdhInput{
CommandID: 76,
Body: bytes.NewReader(buf),
Size: int64(len(buf)),
Sum: h.Sum(nil),
Body: img,
Size: int64(size),
Sum: sum,
Ticket: c.highwaySession.SigSession,
Ext: ext,
Encrypt: false,