# ToolHub **Repository Path**: qeruiop_admin/ToolHub ## Basic Information - **Project Name**: ToolHub - **Description**: No description available - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-16 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ToolHub - 多功能在线工具集合 ToolHub 是一个基于 Node.js 和 Express 构建的现代化 Web 应用,集成了多个实用工具,涵盖文件处理、多媒体分析、加密编码、随机决策等多个领域。所有工具均可直接在浏览器中使用,无需安装额外软件。 ## 🚀 功能特性 ### 1. 图片合并到 ZIP - 支持 JPG、PNG、GIF、WebP 等多种图片格式 - 与 ZIP 压缩包文件合并为单个文件 - 智能文件名处理,避免冲突 - 批量处理,最多支持 20 个文件 ### 2. 随机选择器(转盘) - 可视化转盘界面,支持权重设置 - 可编辑的问题和选项列表 - 批量添加选项功能(支持文本导入) - 语音朗读结果,增强交互体验 - 选项管理(添加、删除、打乱、去重) ### 3. 随机数生成器 - 自定义数值范围(最小/最大值) - 生成指定数量的随机数 - 可选是否允许重复数值 - 动画效果展示生成过程 - 结果按顺序清晰显示 ### 4. 批量选项添加工具 - 文本批量导入,支持多种分隔符 - 自动解析为结构化选项列表 - 与随机选择器无缝集成 - 支持复制/粘贴操作 ### 5. 视频元数据分析 - 支持 MP4、AVI 等常见视频格式 - 提取详细元数据:分辨率、时长、帧率、编码等 - 文件大小和格式验证 - 基于实际 FPS 的精确信息 ### 6. 文本加密/解密 - **支持算法**:AES、DES、3DES、Rabbit、RC4、Base64 - **哈希计算**:MD5、SHA-1、SHA-256、SHA-512 - 密钥管理,安全存储 - 加密/解密双向操作 - 结果一键复制功能 ### 7. 图片格式转换 - **格式互转**:JPG ↔ PNG ↔ WebP ↔ BMP ↔ GIF - 质量参数调节(JPG、WebP) - 上传前图片预览 - 保持原始图像质量 - 自动下载转换结果 ### 8. 编码/解码工具 - **Base64**:文本与 Base64 格式互转 - **URL 编码**:URL 安全字符处理 - **HTML 实体**:特殊字符转义和还原 - **十六进制**:文本与十六进制表示转换 - 实时长度统计和验证 ### 9. 文件哈希计算 - **哈希算法**:MD5、SHA-1、SHA-256、SHA-512、SHA3-256、SHA3-512 - 大文件支持,显示计算进度 - 文件信息显示(名称、大小) - 算法详细说明和位数信息 - 哈希结果快速复制 ### 10. 隐藏图片到压缩包 - 将图片文件隐藏到 ZIP 压缩包中 - 支持密码保护选项 - 保持原始文件完整性 - 隐蔽存储,增强隐私 ### 11. 反隐藏拆分文件 - 从压缩包中提取隐藏的文件 - 验证文件完整性和类型 - 恢复原始文件名和格式 - 安全提取过程 ## 🛠️ 技术栈 - **后端框架**: Node.js + Express 5.x - **前端技术**: HTML5 + CSS3 + JavaScript ES6+ (模块化设计) - **包管理器**: pnpm (推荐) / npm - **文件处理**: multer (上传)、adm-zip (压缩)、fs-extra (文件系统) - **多媒体处理**: get-video-metadata、jimp (图像处理) - **加密编码**: crypto-js、jszip - **开发工具**: nodemon (热重载) - **网络通信**: cors (跨域支持) ## 📦 安装和运行 ### 前提条件 - Node.js (v14 或更高版本) - pnpm (推荐) 或 npm ### 快速开始 1. **克隆或下载项目** ```bash git clone https://gitee.com/qeruiop_admin/ToolHub cd ToolHub ``` 2. **安装依赖** ```bash pnpm install ``` 或 ```bash npm install ``` 3. **启动服务器** - 生产模式: ```bash pnpm start ``` - 开发模式(带热重载): ```bash pnpm dev ``` ### Termux (Android) 中使用 在 Android Termux 环境中同样可以运行: ```bash # 安装 Node.js pkg install nodejs # 安装 pnpm npm install -g pnpm # 进入项目目录 cd ToolHub # 安装依赖 pnpm install # 启动服务器 pnpm start # 或使用开发模式 debug=true pnpm dev ``` ## 🌐 访问方式 服务器启动后,可通过以下方式访问: - **本地访问**: `http://localhost:3000` - **Termux 内访问**: `http://localhost:3000` - **同一局域网设备**: `http://[设备IP地址]:3000` ## 📁 项目结构 ``` toolhub/ ├── public/ # 前端静态资源 │ ├── index.html # 主页面 │ ├── style.css # 全局样式 │ ├── batch-add-options.html │ ├── encoding-tools.html │ ├── file-hash.html │ ├── image-converter.html │ ├── image-hidden-zip.html │ ├── lx-music-snapshot.html │ ├── random-numbers.html │ ├── random-selector.html │ ├── text-encryption.html │ ├── video-metadata.html │ ├── video-player.html │ └── js/ # JavaScript 模块 │ ├── app.js # 应用主逻辑 │ ├── utils.js # 工具函数 │ ├── tabs.js # 标签页管理 │ ├── imageZipMerger.js # 图片ZIP合并 │ ├── randomSelector.js # 随机选择器 │ ├── randomNumberGenerator.js │ ├── batchModal.js │ ├── textEncryption.js │ ├── imageConverter.js │ ├── encodingTools.js │ ├── fileHash.js │ ├── imageHiddenZip.js │ ├── videoPlayer.js │ ├── lxMusicSnapshot.js │ └── vconsole.min.js ├── routes/ # 后端路由模块 │ ├── mergeImageZip.js # 图片合并路由 │ ├── randomSelect.js # 随机选择路由 │ ├── randomNumbers.js # 随机数路由 │ ├── batchAddOptions.js # 批量选项路由 │ ├── videoMetadata.js # 视频元数据路由 │ ├── textCrypto.js # 文本加密路由 │ ├── imageConvert.js # 图片转换路由 │ ├── encodingTools.js # 编码工具路由 │ ├── fileHash.js # 文件哈希路由 │ └── imageHiddenZip.js # 隐藏图片路由 ├── server.js # Express 服务器主文件 ├── package.json # 项目配置和依赖 ├── README.md # 项目文档 └── .gitignore # Git 忽略配置 ``` ## 🔌 API 接口 ### 系统状态 - **GET** `/api/status` - **功能**: 获取服务器运行状态和配置信息 - **返回**: JSON 格式的系统状态、配置和请求信息 ### 1. 图片合并到 ZIP - **POST** `/api/merge` - **参数**: `multipart/form-data` (支持多个图片文件) - **返回**: 合并后的 ZIP 文件下载链接 ### 2. 随机选择器 - **POST** `/api/random/select` - **参数**: JSON `{ options: [], weights: [], allowDuplicate: boolean, spinDuration: number }` - **返回**: `{ selected: string, index: number }` ### 3. 随机数生成器 - **POST** `/api/random/numbers` - **参数**: JSON `{ min: number, max: number, count: number, allowDuplicate: boolean }` - **返回**: `{ numbers: number[] }` ### 4. 批量添加选项 - **POST** `/api/batch-add-options` - **参数**: JSON `{ text: string, delimiter: string }` - **返回**: `{ options: string[] }` ### 5. 视频元数据分析 - **POST** `/api/video/analyze` - **参数**: `multipart/form-data` (video 文件) - **返回**: 视频元数据信息(分辨率、时长、帧率等) ### 6. 文本加密/解密 - **POST** `/api/text/crypto` - **参数**: JSON `{ text: string, algorithm: string, operation: 'encrypt'|'decrypt', key?: string }` - **返回**: `{ result: string }` ### 7. 图片格式转换 - **POST** `/api/image/convert` - **参数**: `multipart/form-data` (image 文件) + `format` 参数 - **返回**: 转换后的图片下载链接 ### 8. 编码/解码工具 - **POST** `/api/encoding/url` - **参数**: JSON `{ text: string, operation: 'encode'|'decode', type: 'base64'|'url'|'html'|'hex' }` - **返回**: `{ result: string }` ### 9. 文件哈希计算 - **POST** `/api/file/hash` - **参数**: `multipart/form-data` (file 文件) + `algorithm` 参数 - **返回**: `{ hash: string, algorithm: string, filename: string }` ### 10. 隐藏图片到压缩包 - **POST** `/api/hide-image-to-zip` - **参数**: `multipart/form-data` (image 文件 + zip 文件) - **返回**: 处理后的文件下载链接 ### 11. 反隐藏拆分文件 - **POST** `/api/unhide-file` - **参数**: `multipart/form-data` (combined 文件) - **返回**: 拆分出的原始文件下载链接 ## 📝 使用示例 ### 随机选择器使用 1. 在主页切换到"随机选择器"标签页 2. 编辑问题文本框(如:"今天午餐吃什么?") 3. 添加选项:"中餐"、"西餐"、"日料"、"快餐"、"自制" 4. 调整权重滑块设置偏好概率 5. 点击"开始旋转"按钮,转盘将随机选择 6. 结果会高亮显示并语音朗读 ### 图片格式转换 1. 切换到"图片转换"标签页 2. 点击"选择图片文件",选择 JPG 文件 3. 在目标格式下拉框中选择 "PNG" 4. 调整质量滑块(如需要) 5. 点击"开始转换"按钮 6. 转换完成后自动下载 PNG 文件 ### 视频元数据分析 1. 上传 MP4 视频文件 2. 系统自动分析并显示: - 分辨率:1920×1080 - 时长:2分30秒 - 帧率:30 FPS - 编码格式:H.264 - 文件大小:45.2 MB ### 调试模式 项目支持详细调试模式,启用后可在控制台查看所有请求日志: ```bash # 启用调试模式启动 debug=true npm start # 或 debug=true pnpm dev ``` 调试功能包括: - HTTP 请求/响应详细日志 - 文件上传过程跟踪 - 错误处理完整上下文 - 系统性能监控 - 内存使用情况 ## ⚠️ 注意事项 1. **文件大小限制**: 单个文件最大 50MB,最多同时上传 20 个文件 2. **支持格式**: 图片(JPG/PNG/GIF/WebP)、视频(MP4/AVI)、压缩包(ZIP) 3. **浏览器兼容**: 需要现代浏览器支持 ES6+ 和 Canvas API 4. **语音功能**: 随机选择器的语音朗读需要浏览器支持 Web Speech API 5. **隐私安全**: 上传的文件仅临时存储在服务器内存中,处理完成后自动清理 6. **网络环境**: 同一局域网访问需确保防火墙允许 3000 端口 ## 📄 许可证 MIT License - 详见项目根目录 LICENSE 文件(如有)或 package.json 中的许可证声明。 --- **版本**: 1.0.0 **最后更新**: 2024年 **维护者**: Operit **项目状态**: 活跃开发中