From ad2f843c8ffe9daa93c6254f2c99843757e39bae Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Sun, 27 Oct 2024 07:31:32 +0800 Subject: [PATCH] fix: downloadRawMsgMedia --- src/core/apis/file.ts | 62 ++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index fd6063b4..f1363a07 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -269,25 +269,49 @@ export class NTQQFileApi { } async downloadRawMsgMedia(msg: RawMessage[]) { - const res = await Promise.all(msg.map(m => - this.downloadMedia(m.msgId, m.chatType, m.peerUid, m.elements[0].elementId, '', '', 1000 * 60 * 2, true) - )); - msg.forEach((m, index) => { - const element = m.elements[0]; - switch (element.elementType) { - case ElementType.PIC: - element.picElement!.sourcePath = res[index]; - break; - case ElementType.VIDEO: - element.videoElement!.filePath = res[index]; - break; - case ElementType.PTT: - element.pttElement!.filePath = res[index]; - break; - case ElementType.FILE: - element.fileElement!.filePath = res[index]; - break; - } + const res = await Promise.all( + msg.map(m => + Promise.all( + m.elements + .filter(element => + element.elementType === ElementType.PIC || + element.elementType === ElementType.VIDEO || + element.elementType === ElementType.PTT || + element.elementType === ElementType.FILE + ) + .map(element => + this.downloadMedia(m.msgId, m.chatType, m.peerUid, element.elementId, '', '', 1000 * 60 * 2, true) + ) + ) + ) + ); + msg.forEach((m, msgIndex) => { + const elementResults = res[msgIndex]; + let elementIndex = 0; + m.elements.forEach(element => { + if ( + element.elementType === ElementType.PIC || + element.elementType === ElementType.VIDEO || + element.elementType === ElementType.PTT || + element.elementType === ElementType.FILE + ) { + switch (element.elementType) { + case ElementType.PIC: + element.picElement!.sourcePath = elementResults[elementIndex]; + break; + case ElementType.VIDEO: + element.videoElement!.filePath = elementResults[elementIndex]; + break; + case ElementType.PTT: + element.pttElement!.filePath = elementResults[elementIndex]; + break; + case ElementType.FILE: + element.fileElement!.filePath = elementResults[elementIndex]; + break; + } + elementIndex++; + } + }); }); }