refactor: 按模块重构项目结构
- 删除 vars 全局状态,按职责拆分 internal/ 包:scanner/probe/classify/organize/mover/store/digest - 数据驱动归类规则替代图片/视频重复分支,store 改为结构体实例 - build.sh 按系统类型编译:Windows 用 upx 压缩,macOS/Linux 不压缩 - 忽略目录拆分:图片_已忽略 / 视频_已忽略 - 输出构建产物加入 .gitignore
This commit is contained in:
@@ -31,9 +31,9 @@ sh build.sh
|
||||
```
|
||||
|
||||
- 依赖 Go 1.19+(`go.mod` 指定 1.19)
|
||||
- 每个平台构建时只内嵌**本平台**的 ffprobe:`vars/bin/ffprobe_mac`(macOS)、`vars/bin/ffprobe.exe`(Windows),需提前放置(未入库,见 `.gitignore`)
|
||||
- `build.sh` 使用 `upx` 压缩产物,输出 `kenaito-media-picker.exe`(Windows 单文件)
|
||||
- 编译所需工具(ffmpeg / upx)压缩包已放在 `doc/` 目录,按需解压使用
|
||||
- 每个平台构建时只内嵌**本平台**的 ffprobe:`internal/probe/bin/ffprobe_mac`(macOS)、`internal/probe/bin/ffprobe.exe`(Windows),需提前放置(未入库,见 `.gitignore`)
|
||||
- `build.sh` 按系统类型编译:**Windows** 下 `go build` 后使用 `upx` 压缩,输出 `kenaito-media-picker.exe`;**macOS / Linux** 直接构建,输出 `kenaito-media-picker`(不压缩)
|
||||
- 编译所需工具(ffmpeg / upx)压缩包已放在 `doc/` 目录,按需解压使用(upx 仅 Windows 构建时需要,放置于项目根目录 `upx`)
|
||||
|
||||
## 使用方法
|
||||
|
||||
@@ -87,7 +87,7 @@ kenaito-media-picker.exe
|
||||
{uid}-视频_横屏_GIF / 视频_竖屏_GIF / 视频_等比_GIF
|
||||
音频 ← 所有音频文件(ffmpeg 可识别的格式)
|
||||
视频_读取异常 ← mime 为视频但 ffprobe 读取失败
|
||||
已忽略 ← 非媒体文件或无法识别
|
||||
视频_已忽略 ← 非媒体文件或无法识别
|
||||
```
|
||||
|
||||
> 视频时长与分辨率通过内嵌 ffprobe 读取(处理时会临时释放到当前目录、完成后自动删除);凡 ffmpeg 支持的视频/音频格式均可识别。
|
||||
@@ -95,10 +95,15 @@ kenaito-media-picker.exe
|
||||
## 目录结构
|
||||
|
||||
```text
|
||||
├── main.go # 程序入口(扫描 → 过滤 → 图片/媒体处理)
|
||||
├── core/ # 核心逻辑:文件扫描、MIME 过滤、图片/视频/音频分组与移动
|
||||
├── util/ # 工具:MIME 识别、图片尺寸读取、ffprobe 封装、文件移动
|
||||
├── vars/ # 全局状态 + 按系统内嵌 ffprobe(go:embed,二进制在 vars/bin/)
|
||||
├── main.go # 程序入口(装配与编排)
|
||||
├── internal/
|
||||
│ ├── scanner/ # 文件扫描、MIME 读取、图片/媒体候选过滤
|
||||
│ ├── probe/ # 媒体探测:图片尺寸 + ffprobe 解析 + 内嵌解码器释放
|
||||
│ ├── classify/ # 纯函数归类规则(方向 + 标准分辨率 + K档)
|
||||
│ ├── organize/ # 整理编排:探测→归类→收集→移动→记录去向
|
||||
│ ├── mover/ # 文件移动(rename / 跨盘 copy+delete)
|
||||
│ ├── store/ # SQLite 媒体信息持久化
|
||||
│ └── digest/ # 文件 MD5 / 指纹采样
|
||||
├── doc/ # 构建依赖(ffmpeg / upx 压缩包)
|
||||
└── build.sh # 编译脚本(upx 压缩)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user