# 文件自动分类 **Repository Path**: Isla7940/automatic-file-classification ## Basic Information - **Project Name**: 文件自动分类 - **Description**: 面向教学一体机开发,用于整理教学文件,实现文件自动分类,使用glm-4-flash模型和Qwen-2-VL-8b模型,支持文档和图片的分类,支持重复文件的清理,支持文件名冲突的自动处理,支持Windows通知系统,支持日志记录,支持管理员权限运行,支持配置文件,支持多线程保护,支持多种文件格式,支持多种分类类别,支持多种图片格式,支持多种文档格式,支持多种文本格式,支持多种office格式。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-30 - **Last Updated**: 2024-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: claude ## README # 文件分类助手 @Isla7940 2024.11.30 ## 简介 使用glm-4-flash模型和Qwen-2-VL-8b模型,支持文档和图片的分类,支持重复文件的清理,支持文件名冲突的自动处理,支持Windows通知系统,支持日志记录,支持管理员权限运行,支持配置文件,支持多线程保护,支持多种文件格式,支持多种分类类别,支持多种图片格式,支持多种文档格式,支持多种文本格式,支持多种office格式。 ###注意 这版resource抹除了所有APIkey,跟随py文件中APIkey处指引免费获取。主要用于学校一体机的维护,可以手动更改systemprompt和六个目标文件夹实现自定义(你都来我这里了,那推荐使用通义灵码修改,以防报错) ## 工作流程 ### 初始化阶段 1. 程序启动 - 检查管理员权限 - 初始化日志系统(logs文件夹) - 加载配置文件(config.json) - 获取桌面路径 - 创建分类文件夹 - 显示启动通知 2. 配置验证 - 验证文件夹权限 - 检查API密钥有效性 - 验证配置文件完整性 - 初始化AI客户端(智谱AI和视觉API) ### 运行阶段 1. 文件监控(FileHandler类) - 持续监控桌面和下载文件夹 - 事件处理: * on_created: 检测新文件创建 * on_moved: 处理下载完成的文件 - 文件过滤: * 检查文件扩展名 * 忽略临时文件(.crdownload等) * 跳过已处理文件 2. 智能分类(FileClassifier类) - 文件名分类:使用智谱AI进行文件名语义分析 * 发送文件名到GLM-4-flash模型 * 进行三次分类确认 * 结果必须完全一致才采用 - 内容分析: * 文档:提取并分析文档内容(支持Word、PDF、Excel等) - Word: 使用python-docx提取文本 - PDF: 使用PyPDF2提取内容 - Excel: 使用openpyxl读取单元格 - 限制提取长度(2000字符) - 分段分析(前60%和后60%重叠) * 图片:使用视觉AI分析图片内容 - 转换为base64格式 - 调用视觉API进行分析 - 大小限制(10MB) - 多重验证:对重要文件进行多次分类确认 3. 文件处理(process_file方法) - 自动创建分类文件夹 - 文件名冲突处理: * 检查目标路径是否存在 * 自动添加数字后缀 * 保持文件扩展名 - 检测并清理重复文件 * 比对文件大小 * 删除重复文件 * 记录清理数量 - 保持文件原始属性 4. 用户交互(通知系统) - Windows原生通知提醒 * 使用winotify库 * 支持自定义图标 * 可配置显示时间 - 支持直接从通知打开文件 * 转换为file://格式URL * 添加打开文件按钮 - 详细的日志记录 * 使用logging模块 * 日志分级(INFO/WARNING/ERROR) * 自动日志轮转 - 异常处理和错误提示 5. 安全机制(多线程保护) - 文件操作加锁保护 * 使用threading.Lock * 保护共享资源访问 - 异常恢复机制 * try-except捕获所有操作 * 错误日志记录 * 出错时保持程序运行 - 权限检查 * 检查管理员权限 * 验证文件夹访问权限 * 测试文件写入权限 - 配置文件验证 * JSON格式检查 * 必要字段验证 * 默认值回退机制 ## 主要功能 - 自动监控桌面和下载文件夹 - 支持多种文件格式(文档、图片等) - 智能分类到不同学科文件夹 - Windows 系统通知提醒 - 自动清理重复文件 - 详细的日志记录 ## 支持的文件格式 ### 文档 - Word文档 (.doc, .docx) - PowerPoint演示文稿 (.ppt, .pptx) - Excel表格 (.xls, .xlsx) - PDF文件 (.pdf) - 文本文件 (.txt, .rtf) - WPS文件 (.wps, .et, .dps) ### 图片 - JPG/JPEG (.jpg, .jpeg) - PNG (.png) - GIF (.gif) - BMP (.bmp) - WebP (.webp) - SVG (.svg) - ICO (.ico) ## 分类类别 - 物理 - 化学 - 生物 - 语文 - 数学 - 英语 ## 使用方法 1. 确保程序以管理员权限运行 2. 程序启动后会自动在桌面创建分类文件夹 3. 将文件放入桌面或下载文件夹,程序会自动分类 4. 分类完成后会收到Windows通知 5. 点击通知可以直接打开已分类的文件 ## 配置文件 程序使用`config.json`进行配置,可以自定义: - 监控的文件夹路径 - 支持的文件格式 - 分类类别 ## 注意事项 1. 首次运行需要管理员权限 2. 确保桌面和下载文件夹有写入权限 3. 需要联网使用AI分类功能,使用的是智谱AI的API,源码中包含API密钥用于免费模型GLM-4-flash,请不要滥用siliconflow付费API,可使用内建API或自行注册获取免费额度 4. 建议定期查看logs文件夹中的日志 5. 如果需要修改文件夹路径,请在config.json中修改,release版本中无法修改 ## 系统要求 - Windows 操作系统 - Python 3.6+ - 网络连接 ## 依赖库 - watchdog - zhipuai - winotify - openai - python-docx - PyPDF2 - openpyxl ## 错误处理 如果遇到问题: 1. 检查日志文件了解详细错误信息 2. 确认文件夹权限设置 3. 检查网络连接 4. 验证API密钥是否有效 ## 隐私说明 - 程序仅分析本地文件 - 不会上传完整文件内容 - 仅发送必要的文本片段用于分类 ## 版本历史 + ### TEST 0.5 (初始版本) + - 实现基础文件监控功能 + - 添加简单的文件名分类 + - 基础的桌面文件夹创建 + - 简单的日志记录功能 + + ### DEMO 1.0 + - 添加异常处理机制 + - 实现通知常驻功能 + - 将配置移至外部JSON文件 + - 优化文件监控稳定性 + - 改进日志记录系统 + ### DEMO 1.5 - 更改通知库,提升兼容性 - 增加文档内容解析功能 - 增加Windows 11兼容性 - 增加图像识别支持 - 添加管理员权限打包功能 ### BETA 2.0 - 重构代码结构,提升稳定性 - 优化文件监控逻辑 - 增加更多图片格式支持 - 改进日志记录系统 - 添加配置文件功能 - 优化重复文件处理 - 增强错误处理机制 - 改进通知系统,支持打开文件 - 添加视觉分析功能 - 优化内存使用 ## 许可证 MIT License