From 0ed4480878f7d8ccabb73c525257787abb895e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E6=B1=A0?= Date: Sun, 18 Feb 2024 21:07:22 +0800 Subject: [PATCH] `Shamrock`: fix #242 --- .../servlet/msg/convert/MessageElemConverter.kt | 9 ++++++++- .../qqinterface/servlet/transfile/RichProtoSvc.kt | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/convert/MessageElemConverter.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/convert/MessageElemConverter.kt index d4ee6e3..ea64cbf 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/convert/MessageElemConverter.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/convert/MessageElemConverter.kt @@ -17,6 +17,7 @@ import moe.fuqiuluo.shamrock.helper.db.ImageMapping import moe.fuqiuluo.shamrock.helper.db.MessageDB import moe.fuqiuluo.shamrock.tools.asJsonObject import moe.fuqiuluo.shamrock.tools.asString +import moe.fuqiuluo.shamrock.tools.hex2ByteArray import moe.fuqiuluo.shamrock.tools.json import mqq.app.MobileQQ import kotlin.jvm.internal.Intrinsics @@ -213,7 +214,13 @@ internal sealed class MessageElemConverter: IMessageConvert { element: MsgElement ): MessageSegment { val video = element.videoElement - val md5 = video.fileName.split(".")[0] + val md5 = if (video.fileName.contains("/")) { + video.videoMd5.takeIf { + !it.isNullOrEmpty() + }?.hex2ByteArray() ?: video.fileName.split("/").let { + it[it.size - 2].hex2ByteArray() + } + } else video.fileName.split(".")[0].hex2ByteArray() LogCenter.log({ "receive video msg: $video" }, Level.DEBUG) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt index 9b5c4f8..4732c4f 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt @@ -205,7 +205,7 @@ internal object RichProtoSvc: BaseSvc() { suspend fun getC2CVideoDownUrl( peerId: String, - md5Hex: String, + md5: ByteArray, fileUUId: String ): String { return suspendCancellableCoroutine { @@ -221,7 +221,7 @@ internal object RichProtoSvc: BaseSvc() { downReq.troopUin = peerId downReq.clientType = 2 downReq.fileId = fileUUId - downReq.md5 = md5Hex.hex2ByteArray() + downReq.md5 = md5 downReq.busiType = FileTransfer.BUSI_TYPE_SHORT_VIDEO downReq.subBusiType = 0 downReq.fileType = FileTransfer.VIDEO_FORMAT_MP4 @@ -248,7 +248,7 @@ internal object RichProtoSvc: BaseSvc() { suspend fun getGroupVideoDownUrl( peerId: String, - md5Hex: String, + md5: ByteArray, fileUUId: String ): String { return suspendCancellableCoroutine { @@ -264,7 +264,7 @@ internal object RichProtoSvc: BaseSvc() { downReq.troopUin = peerId downReq.clientType = 2 downReq.fileId = fileUUId - downReq.md5 = md5Hex.hex2ByteArray() + downReq.md5 = md5 downReq.busiType = FileTransfer.BUSI_TYPE_SHORT_VIDEO downReq.subBusiType = 0 downReq.fileType = FileTransfer.VIDEO_FORMAT_MP4