koishi-plugin-best-cave
Version:
回声洞,可自由添加内容,可配置 MD5/pHash 查重,支持查阅投稿列表(可用但等待重构)
109 lines (108 loc) • 2.81 kB
TypeScript
/**
* 哈希存储状态类型
*/
interface HashStorageStatus {
lastUpdated: string;
entries: Array<{
caveId: number;
imageHashes: string[];
textHashes: string[];
}>;
}
/**
* 图片哈希值存储管理类
* 负责管理和维护回声洞图片的哈希值
*/
export declare class HashManager {
private readonly caveDir;
private static readonly HASH_FILE;
private static readonly CAVE_FILE;
private static readonly BATCH_SIZE;
private imageHashes;
private textHashes;
private initialized;
/**
* 初始化HashManager实例
* @param caveDir 回声洞数据目录路径
*/
constructor(caveDir: string);
private get filePath();
private get resourceDir();
private get caveFilePath();
/**
* 初始化哈希存储
* 读取现有哈希数据或重新构建哈希值
* @throws 初始化失败时抛出错误
*/
initialize(): Promise<void>;
/**
* 获取当前哈希存储状态
* @returns 包含最后更新时间和所有条目的状态对象
*/
getStatus(): Promise<HashStorageStatus>;
/**
* 更新指定回声洞的图片哈希值
* @param caveId 回声洞ID
* @param content 图片buffer数组
*/
updateCaveContent(caveId: number, content: {
images?: Buffer[];
texts?: string[];
}): Promise<void>;
/**
* 更新所有回声洞的哈希值
* @param isInitialBuild 是否为初始构建
*/
updateAllCaves(isInitialBuild?: boolean): Promise<void>;
/**
* 查找重复的图片
* @param content 待查找的图片buffer数组
* @param thresholds 相似度阈值
* @returns 匹配结果数组,包含索引、回声洞ID和相似度
*/
findDuplicates(content: {
images?: Buffer[];
texts?: string[];
}, thresholds: {
image: number;
text: number;
}): Promise<Array<{
type: 'image' | 'text';
index: number;
caveId: number;
similarity: number;
} | null>>;
private findTextDuplicates;
private calculateTextSimilarity;
private findImageDuplicates;
/**
* 加载回声洞数据
* @returns 回声洞数据数组
* @private
*/
private loadCaveData;
/**
* 保存哈希数据到文件
* @private
*/
private saveContentHashes;
/**
* 构建初始哈希数据
* @private
*/
private buildInitialHashes;
/**
* 更新缺失的哈希值
* @private
*/
private updateMissingHashes;
/**
* 批量处理数组项
* @param items 待处理项数组
* @param processor 处理函数
* @param batchSize 批处理大小
* @private
*/
private processBatch;
}
export {};