From bc0fc96b9b8bec3e4b56ab9b857fce1a3c3fdbaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 15 Nov 2024 18:35:34 +0800 Subject: [PATCH] refactor: rkey get --- src/core/apis/file.ts | 46 ++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index b0cd2309..17fc0036 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -300,18 +300,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } @@ -410,27 +410,27 @@ export class NTQQFileApi { if (!element) { return ''; } - + const url: string = element.originImageUrl ?? ''; const md5HexStr = element.md5HexStr; const fileMd5 = element.md5HexStr; - + if (url) { const parsedUrl = new URL(IMAGE_HTTP_HOST + url); const rkeyData = await this.getRkeyData(); return this.getImageUrlFromParsedUrl(parsedUrl, rkeyData); } - + return this.getImageUrlFromMd5(fileMd5, md5HexStr); } - + private async getRkeyData() { const rkeyData = { private_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qEc3Rbib9LP4', group_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qffcqm614gds', online_rkey: false }; - + try { if (this.core.apis.PacketApi.available) { const rkey_expired_private = !this.packetRkey || this.packetRkey[0].time + Number(this.packetRkey[0].ttl) < Date.now() / 1000; @@ -447,7 +447,7 @@ export class NTQQFileApi { } catch (error: any) { this.context.logger.logError.bind(this.context.logger)('获取rkey失败', error.message); } - + if (!rkeyData.online_rkey) { try { const tempRkeyData = await this.rkeyManager.getRkey(); @@ -458,34 +458,30 @@ export class NTQQFileApi { this.context.logger.logError.bind(this.context.logger)('获取rkey失败 Fallback Old Mode', e); } } - + return rkeyData; } - + private getImageUrlFromParsedUrl(parsedUrl: URL, rkeyData: any): string { - const urlRkey = parsedUrl.searchParams.get('rkey'); const imageAppid = parsedUrl.searchParams.get('appid'); const isNTV2 = imageAppid && ['1406', '1407'].includes(imageAppid); const imageFileId = parsedUrl.searchParams.get('fileid'); - - if (isNTV2 && urlRkey) { - return IMAGE_HTTP_HOST_NT + urlRkey; - } else if (isNTV2 && rkeyData.online_rkey) { + if (isNTV2 && rkeyData.online_rkey) { const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; return IMAGE_HTTP_HOST_NT + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`; } else if (isNTV2 && imageFileId) { const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; return IMAGE_HTTP_HOST + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`; } - + return ''; } - + private getImageUrlFromMd5(fileMd5: string | undefined, md5HexStr: string | undefined): string { if (fileMd5 || md5HexStr) { - return `${IMAGE_HTTP_HOST}/gchatpic_new/0/0-0-${(fileMd5 ?? md5HexStr)!.toUpperCase()}/0`; + return `${IMAGE_HTTP_HOST}/gchatpic_new/0/0-0-${(fileMd5 ?? md5HexStr ?? '').toUpperCase()}/0`; } - + this.context.logger.logDebug('图片url获取失败', { fileMd5, md5HexStr }); return ''; }