LeafSort(轻羽媒体整理)- 智能本地多媒体管理工具

LeafSort 是一款基于 Python 开发的图片管理工具,专注于高效管理、智能整理和批量处理各类图片文件。软件支持多种图片格式的快速浏览和管理,提供按时间、地点、设备、类型等多维度自动分类整理功能,基于 MD5 哈希算法进行文件去重,支持 EXIF 元数据的查看和编辑,以及批量重命名和地理编码等操作。

LeafSort(轻羽媒体整理)- 智能本地多媒体管理工具

Github开源地址:https://github.com/YangShengzhou03/LeafSort

软件功能

图片管理
支持多种图片格式的快速浏览和管理,包括 JPEG、PNG、WebP、HEIC、HEIF 等主流格式,可以快速加载和显示大量图片文件。

智能整理
提供智能整理功能,可以根据图片的拍摄时间、GPS 位置、拍摄设备、文件类型等多个维度自动分类整理文件。用户可以自定义分类规则和文件命名规则,软件会自动读取图片的 EXIF 元数据,构建目标路径和文件名,执行文件复制或移动操作。

文件去重
基于 MD5 哈希算法精确识别完全相同的文件,支持两阶段筛选机制:第一阶段按文件大小分组快速排除不重复的文件,第二阶段只对相同大小的文件计算 MD5,大幅减少计算量。使用线程池并发计算 MD5,支持缓存已计算的哈希值,提高处理效率。

EXIF 编辑
支持查看和修改图片的 EXIF 元数据信息,包括标题、作者、评分、相机品牌、型号、镜头信息等。软件内置了相机品牌型号数据库和镜头型号数据库,可以自动匹配镜头信息。支持 JPEG、PNG、WebP 等多种格式的 EXIF 读写,对于复杂格式使用 exiftool 作为备选方案。

地理编码
自动将 GPS 坐标转换为地址信息,使用高德地图 API 进行逆地理编码。软件会缓存地理编码结果,避免重复 API 调用,支持批量处理相同位置的文件,提高处理效率。

多格式支持
除了图片格式,还支持视频、音频、文档、压缩包等多种文件类型的管理和处理。

技术架构

开发环境

  • Python 3.11+
  • PyQt6 6.5.0+
  • Pillow 11.3.0+
  • opencv-python 4.8.0+
  • scikit-image 0.24.0+
  • numpy 1.24.0+
  • piexif 1.1.3+
  • exifread 3.0.0+
  • pillow-heif 0.16.0+
  • requests 2.31.0+
  • playwright 1.40.0+

架构设计

软件采用三层架构设计,包括用户界面层、业务逻辑层和数据处理层。用户界面层基于 PyQt6 构建现代化 GUI 界面,业务逻辑层处理核心业务逻辑和功能实现,数据处理层负责文件操作、元数据处理和配置管理。

核心模块

  • App.py: 应用程序入口,负责初始化 QApplication、创建主窗口实例、设置全局异常处理和单实例检测
  • main_window.py: 主窗口控制器,管理所有功能页面,处理窗口事件,管理系统托盘图标
  • add_folder.py: 文件夹管理页面,管理源文件夹和目标文件夹的选择,验证文件夹路径的有效性
  • smart_arrange.py: 智能整理业务逻辑管理器,管理智能整理的 UI 交互,收集用户配置
  • smart_arrange_thread.py: 智能整理工作线程,在独立线程中执行整理任务,避免阻塞 UI
  • write_exif.py: EXIF 编辑业务逻辑管理器,管理 EXIF 编辑的 UI 交互,收集用户配置
  • write_exif_thread.py: EXIF 写入工作线程,在独立线程中执行 EXIF 写入任务
  • file_deduplication.py: 文件去重业务逻辑管理器,管理文件去重的 UI 交互
  • file_deduplication_thread.py: 文件去重工作线程,扫描文件并计算 MD5,删除重复文件
  • common.py: 通用工具库,提供资源路径管理、文件类型检测、媒体类型检测、地理编码服务等功能
  • config_manager.py: 配置管理器,线程安全的配置读写操作,管理地理编码缓存和 API 调用限流
  • update_dialog.py: 更新检查对话框,检查 GitHub 上的最新版本

线程模型

软件使用 Qt 的信号槽机制进行线程通信,主线程处理所有 UI 交互和响应,工作线程执行耗时的文件操作任务。所有工作线程都继承自 QThread,支持随时停止操作,保持 UI 响应流畅。

© 版权声明

相关文章

暂无评论

none
暂无评论...