mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-04 14:41:14 +00:00
* feat: implement QQ online file transfer and flash transfer support * fix: change OnlineFile OB11Message data * fix: add fileSize and isDir to OB11MessageOnlineFile * fix: resolve typescript strict mode errors
325 lines
7.2 KiB
TypeScript
325 lines
7.2 KiB
TypeScript
export interface FlashBaseRequest {
|
||
fileSetId: string
|
||
}
|
||
|
||
export interface UploaderInfo {
|
||
uin: string,
|
||
nickname: string,
|
||
uid: string,
|
||
sendEntrance: string, // ""
|
||
}
|
||
|
||
export interface thumbnailInfo {
|
||
id: string,
|
||
url: {
|
||
spec: number,
|
||
uri: string,
|
||
}[],
|
||
localCachePath: string,
|
||
}
|
||
|
||
export interface SendTarget {
|
||
destType: number // 1私聊
|
||
destUin?: string,
|
||
destUid: string,
|
||
}
|
||
|
||
export interface SendTargetRequests {
|
||
fileSetId: string
|
||
targets: SendTarget[]
|
||
}
|
||
|
||
export interface DownloadStatusInfo {
|
||
result: number; // 0
|
||
fileSetId: string;
|
||
status: number;
|
||
info: {
|
||
curDownLoadFailFileNum: number,
|
||
curDownLoadedPauseFileNum: number,
|
||
curDownLoadedFileNum: number,
|
||
curRealDownLoadedFileNum: number,
|
||
curDownloadingFileNum: number,
|
||
totalDownLoadedFileNum: number,
|
||
curDownLoadedBytes: string, // "0"
|
||
totalDownLoadedBytes: string,
|
||
curSpeedBps: number,
|
||
avgSpeedBps: number,
|
||
maxSpeedBps: number,
|
||
remainDownLoadSeconds: number,
|
||
failFileIdList: [],
|
||
allFileIdList: [],
|
||
hasNormalFileDownloading: boolean,
|
||
onlyCompressInnerFileDownloading: boolean,
|
||
isAllFileAlreadyDownloaded: boolean,
|
||
saveFileSetDir: string,
|
||
allWaitingStatusTask: boolean,
|
||
downloadSceneType: number,
|
||
retryCount: number,
|
||
statisticInfo: {
|
||
downloadTaskId: string,
|
||
downloadFilesetName: string,
|
||
downloadFileTypeDistribution: string,
|
||
downloadFileSizeDistribution: string
|
||
},
|
||
albumStorageFailImageNum: number,
|
||
albumStorageFailVideoNum: number,
|
||
albumStorageFailFileIdList: [],
|
||
albumStorageSucImageNum: number,
|
||
albumStorageSucVideoNum: number,
|
||
albumStorageSucFileIdList: [],
|
||
albumStorageFileNum: number
|
||
}
|
||
}
|
||
|
||
export interface physicalInfo {
|
||
id: string,
|
||
url: string,
|
||
status: number, // 2 已下载
|
||
processing: string,
|
||
localPath: string,
|
||
width: 0,
|
||
height: 0,
|
||
time: number,
|
||
}
|
||
|
||
export interface downloadInfo {
|
||
status: number,
|
||
curDownLoadBytes: string,
|
||
totalFileBytes: string,
|
||
errorCode: number,
|
||
}
|
||
|
||
export interface uploadInfo {
|
||
uploadedBytes: string,
|
||
errorCode: number,
|
||
svrRrrCode: number,
|
||
errMsg: string,
|
||
isNeedDelDeviceInfo: boolean,
|
||
thumbnailUploadState: number
|
||
isSecondHit: boolean,
|
||
hasModifiedErr: boolean,
|
||
}
|
||
|
||
export interface folderUploadInfo {
|
||
totalUploadedFileSize: string
|
||
successCount: number
|
||
failedCount: number
|
||
}
|
||
|
||
export interface folderDownloadInfo {
|
||
totalDownloadedFileSize: string
|
||
totalFileSize: string
|
||
totalDownloadFileCount: number
|
||
successCount: number
|
||
failedCount: number
|
||
pausedCount: number
|
||
cancelCount: number
|
||
downloadingCount: number
|
||
partialDownloadCount: number
|
||
curLevelDownloadedFileCount: number
|
||
curLevelUnDownloadedFileCount: number
|
||
}
|
||
|
||
export interface compressFileFolderInfo {
|
||
downloadStatus: number
|
||
saveFileDirPath: string
|
||
totalFileCount: string
|
||
totalFileSize: string
|
||
}
|
||
|
||
export interface albumStorgeInfo {
|
||
status: number
|
||
localIdentifier: string
|
||
errorCode: number
|
||
timeCost: number
|
||
}
|
||
|
||
export interface FlashOneFileInfo {
|
||
fileSetId: string
|
||
cliFileId: string // client?? 或许可以换取url
|
||
compressedFileFolderId: string
|
||
archiveIndex: 0
|
||
indexPath: string
|
||
isDir: boolean // 文件或者文件夹!!
|
||
parentId: string
|
||
depth: number // 1
|
||
cliFileIndex: number
|
||
fileType: number // 枚举!! 已完成枚举!!
|
||
name: string
|
||
namePinyin: string
|
||
isCover: boolean
|
||
isCoverOriginal: boolean
|
||
fileSize: string
|
||
fileCount: number
|
||
thumbnail: thumbnailInfo
|
||
physical: physicalInfo
|
||
srvFileId: string // service?? 服务器上面的id吗?
|
||
srvParentFileId: string
|
||
svrLastUpdateTimestamp: string
|
||
downloadInfo: downloadInfo
|
||
saveFilePath: string
|
||
search_relative_path: string
|
||
disk_relative_path: string
|
||
uploadInfo: uploadInfo
|
||
status: number
|
||
uploadStatus: number // 3已上传成功
|
||
downloadStatus: number // 0未下载
|
||
folderUploadInfo: folderUploadInfo
|
||
folderDownloadInfo: folderDownloadInfo
|
||
sha1: string
|
||
bookmark: string
|
||
compressFileFolderInfo: compressFileFolderInfo
|
||
uploadPauseReason: string
|
||
downloadPauseReason: string
|
||
filePhysicalSize: string
|
||
thumbnail_sha1: string | null
|
||
thumbnail_size: string | null
|
||
needAlbumStorage: boolean
|
||
albumStorageInfo: albumStorgeInfo
|
||
}
|
||
|
||
export interface fileListsInfo {
|
||
parentId: string,
|
||
depth: number, // 1
|
||
fileList: FlashOneFileInfo[],
|
||
paginationInfo: {}
|
||
isEnd: boolean,
|
||
isCache: boolean,
|
||
}
|
||
|
||
export interface FileListResponse {
|
||
seq: number,
|
||
result: number,
|
||
errMs: string,
|
||
fileLists: fileListsInfo[],
|
||
}
|
||
|
||
export interface createFlashTransferResult {
|
||
fileSetId: string,
|
||
shareLink: string,
|
||
expireTime: string,
|
||
expireLeftTime: string,
|
||
}
|
||
|
||
export interface StartFlashTaskRequests {
|
||
screen?: number; // 1 PC-QQ
|
||
uploaders: UploaderInfo[];
|
||
permission?: {};
|
||
coverPath?: string;
|
||
paths: string[]; // 文件的绝对路径,可以是文件夹
|
||
// excludePaths: [];
|
||
// expireLeftTime: 0,
|
||
// isNeedDelDeviceInfo: boolean,
|
||
// isNeedDelLocation: boolean,
|
||
// coverOriginalInfos: [],
|
||
// uploadSceneType: 10, // 不知道怎么枚举 先硬编码吧
|
||
// detectPrivacyInfoResult: {
|
||
// exists: boolean,
|
||
// allDetectResults: {}
|
||
// }
|
||
}
|
||
|
||
export interface FileListInfoRequests {
|
||
seq: number, // 0
|
||
fileSetId: string,
|
||
isUseCache: boolean,
|
||
sceneType: number, // 1
|
||
reqInfos: {
|
||
count: number, // 18 ?? 硬编码吧 不懂
|
||
paginationInfo: {},
|
||
parentId: string,
|
||
reqIndexPath: string,
|
||
reqDepth: number, // 1
|
||
filterCondition: {
|
||
fileCategory: number,
|
||
filterType: number,
|
||
}, // 0
|
||
sortConditions: {
|
||
sortField: number,
|
||
sortOrder: number,
|
||
}[],
|
||
isNeedPhysicalInfoReady: boolean
|
||
}[]
|
||
}
|
||
|
||
export interface FlashFileSetInfo {
|
||
fileSetId: string,
|
||
name: string,
|
||
namePinyin: string,
|
||
totalFileCount: number,
|
||
totalFileSize: number,
|
||
permission: {},
|
||
shareInfo: {
|
||
shareLink: string,
|
||
extractionCode: string,
|
||
},
|
||
cover: {
|
||
id: string,
|
||
urls: [
|
||
{
|
||
spec: number, // 2
|
||
url: string
|
||
}
|
||
],
|
||
localCachePath: string
|
||
},
|
||
uploaders: [
|
||
{
|
||
uin: string,
|
||
nickname: string,
|
||
uid: string,
|
||
sendEntrance: string
|
||
}
|
||
],
|
||
expireLeftTime: number,
|
||
aiClusteringStatus: {
|
||
firstClusteringList: [],
|
||
shouldPull: boolean
|
||
},
|
||
createTime: number,
|
||
expireTime: number,
|
||
firstLevelItemCount: 1,
|
||
svrLastUpdateTimestamp: 0,
|
||
taskId: string, // 同 fileSetId
|
||
uploadInfo: {
|
||
totalUploadedFileSize: number,
|
||
successCount: number,
|
||
failedCount: number
|
||
},
|
||
downloadInfo: {
|
||
totalDownloadedFileSize: 0,
|
||
totalFileSize: 0,
|
||
totalDownloadFileCount: 0,
|
||
successCount: 0,
|
||
failedCount: 0,
|
||
pausedCount: 0,
|
||
cancelCount: 0,
|
||
status: 0,
|
||
curLevelDownloadedFileCount: number,
|
||
curLevelUnDownloadedFileCount: 0
|
||
},
|
||
transferType: number,
|
||
isLocalCreate: true,
|
||
status: number, // todo 枚举全部状态
|
||
uploadStatus: number, // todo 同上
|
||
uploadPauseReason: 0,
|
||
downloadStatus: 0,
|
||
downloadPauseReason: 0,
|
||
saveFileSetDir: string,
|
||
uploadSceneType: 10,
|
||
downloadSceneType: 0, // 0 PC-QQ 103 web
|
||
retryCount: number,
|
||
isMergeShareUpload: 0,
|
||
isRemoveDeviceInfo: boolean,
|
||
isRemoveLocation: boolean
|
||
}
|
||
|
||
export interface SendStatus {
|
||
result: number,
|
||
msg: string,
|
||
target: {
|
||
destType: number,
|
||
destUid: string,
|
||
}
|
||
}
|