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: DownloadSceneType, 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 enum UploadSceneType { KUPLOADSCENEUNKNOWN, KUPLOADSCENEFLOATWINDOWRIGHTCLICKMENU, KUPLOADSCENEFLOATWINDOWDRAG, KUPLOADSCENEFLOATWINDOWFILESELECTOR, KUPLOADSCENEFLOATWINDOWSHORTCUTKEYCTRLCV, KUPLOADSCENEH5LAUNCHCLIENTRIGHTCLICKMENU, KUPLOADSCENEH5LAUNCHCLIENTDRAG, KUPLOADSCENEH5LAUNCHCLIENTFILESELECTOR, KUPLOADSCENEH5LAUNCHCLIENTSHORTCUTKEYCTRLCV, KUPLOADSCENEAIODRAG, KUPLOADSCENEAIOFILESELECTOR, KUPLOADSCENEAIOSHORTCUTKEYCTRLCV } export interface StartFlashTaskRequests { screen: number; // 1 PC-QQ name?: string; uploaders: UploaderInfo[]; permission?: {}; coverPath?: string; paths: string[]; // 文件的绝对路径,可以是文件夹 excludePaths?: string[]; expireLeftTime?: number, // 0 isNeedDelDeviceInfo: boolean, isNeedDelLocation: boolean, coverOriginalInfos?: { path: string, thumbnailPath: string, }[], uploadSceneType: UploadSceneType, // 不知道怎么枚举 先硬编码吧 (PC QQ 10) detectPrivacyInfoResult: { exists: boolean, allDetectResults: {}; }; } export enum BusiScene { KBUSISCENEINVALID, KBUSISCENEFLASHSCENE } export interface FileListInfoRequests { seq: number, // 0 fileSetId: string, isUseCache: boolean, sceneType: BusiScene, // 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 enum DownloadSceneType { KDOWNLOADSCENEUNKNOWN, KDOWNLOADSCENEARKC2C, KDOWNLOADSCENEARKC2CDETAILPAGE, KDOWNLOADSCENEARKGROUP, KDOWNLOADSCENEARKGROUPDETAILPAGE, KDOWNLOADSCENELINKC2C, KDOWNLOADSCENELINKGROUP, KDOWNLOADSCENELINKCHANNEL, KDOWNLOADSCENELINKTEMPCHAT, KDOWNLOADSCENELINKOTHERINQQ, KDOWNLOADSCENESCANQRCODE, KDWONLOADSCENEFLASHTRANSFERCENTERCLIENT, KDWONLOADSCENEFLASHTRANSFERCENTERSCHEMA } 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: UploadSceneType, downloadSceneType: DownloadSceneType, // 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, }; }