Files
kenaito-media-picker/README.md
T

111 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# kenaito-media-picker
媒体分辨率分类整理工具:一键扫描目录下所有图片与视频,按横屏 / 竖屏 / 等比和分辨率自动归类到对应子目录。
## 功能特性
- **图片 / 视频双支持**:扫描当前目录(递归),自动识别图片与视频文件
- **标准分辨率归类**:720P、1080P、2K、2.5K、影院 2K、DCI 4K、8K 及带鱼屏(UltraWide 2K/3K/4K)等标准规格单独建目录
- **非标分辨率归类**:按像素区间自动归入 1K ~ 9K / 普通 / 原图(原画质)目录
- **方向区分**:横屏、竖屏、等比(正方形)分开整理,GIF 单独处理
- **异常兜底**:读取失败、不支持的格式自动归入「读取异常」「已忽略」目录
- **自动整理**:无需人工干预,扫描 → 分析 → 移动一次完成,跨磁盘自动降级为复制后删除
- **零依赖安装**:视频信息读取使用内嵌的 `ffprobe.exe`(Windows x64),无需额外安装 ffmpeg
## 支持的格式
| 类型 | 格式 |
|------|------|
| 图片 | JPG / JPEG / JPE / JFIF / PNG / GIF / BMP / WEBP / PSB,PSD 单独归入「图片_PSD」 |
| 视频 | MP4 / AVI / MOV / MKV / MPG / M4V / WMV / WEBM / FLV / TS / RM / RMVB / 3GP / 3G2 |
> 判断依据为文件 MIME 信息 + 扩展名双重识别,扩展名大小写不敏感。
## 构建编译
```shell
sh build.sh
```
- 依赖 Go 1.19+(`go.mod` 指定 1.19)
- `build.sh` 使用 `upx` 压缩产物,输出 `kenaito-media-picker.exe`(Windows 单文件)
- 编译所需工具(ffmpeg / upx)压缩包已放在 `doc/` 目录,按需解压使用
## 使用方法
```text
# 双击有风险, 双击需谨慎
将 kenaito-media-picker.exe 拖拽到需要整理的文件夹内,双击运行即可
# 或命令行运行
kenaito-media-picker.exe
```
程序启动后有 **5 秒倒计时**,期间可 Ctrl+C 取消;倒计时结束后自动开始整理。
## 整理规则
执行后,会在当前目录生成一批以 UUID 开头命名的子目录,文件按规则移动(或复制)进去:
### 图片
```text
{uid}-图片_横屏_720P ← 1280×720
{uid}-图片_横屏_1D5KP ← 1600×900
{uid}-图片_横屏_1080P ← 1920×1080
{uid}-图片_横屏_2DKP ← 2048×1080(影院 2K)
{uid}-图片_横屏_2D5KP ← 2560×1440(2.5K)
{uid}-图片_横屏_ultraWide2KP ← 2560×1080(带鱼屏)
{uid}-图片_横屏_ultraWide3KP ← 3440×1440(带鱼屏)
{uid}-图片_横屏_ultraWide4KP ← 5120×2160(带鱼屏)
{uid}-图片_横屏_4KP ← 3840×2160
{uid}-图片_横屏_4KHP ← 4096×2160(DCI 4K)
{uid}-图片_横屏_8KP ← 7680×4320
{uid}-图片_横屏_1K ~ 9K ← 非标规格按像素区间
{uid}-图片_横屏_普通 ← 像素不足 1000
{uid}-图片_横屏_原图 ← 像素 ≥ 10000
{uid}-图片_竖屏_... ← 竖屏按同样规则(普通 / 1K~9K / 原图)
{uid}-图片_等比_... ← 等比(正方形)按同样规则
{uid}-图片_GIF ← 所有 GIF 图片
{uid}-图片_PSD ← 所有 PSD 文件
{uid}-图片_读取异常 ← 无法读取尺寸的图片
{uid}-图片_已忽略 ← 不支持格式的图片
```
### 视频
```text
{uid}-视频_横屏_720P / 1080P / 2DKP / 2D5KP / 4KP / 4KHP / 8KP
{uid}-视频_横屏_UltraWide2KP / UltraWide3KP / UltraWide4KP
{uid}-视频_横屏_1k ~ 9k / 普通 / 原画质
{uid}-视频_竖屏_1k ~ 9k / 普通 / 原画质
{uid}-视频_等比_1k ~ 9k / 普通 / 原画质
{uid}-视频_横屏_GIF / 视频_竖屏_GIF / 视频_等比_GIF
读取异常 ← 无法读取分辨率的视频
已忽略 ← 不支持的视频格式
```
> 视频时长与分辨率通过内嵌 `ffprobe.exe` 读取(处理时会临时释放,完成后自动删除)。
## 目录结构
```text
├── main.go # 程序入口(扫描 → 过滤 → 图片/视频处理)
├── core/ # 核心逻辑:文件扫描、MIME 过滤、图片/视频分组与移动
├── util/ # 工具:MIME 识别、图片尺寸读取、ffprobe 封装、文件移动
├── vars/ # 全局状态 + 内嵌 ffprobe.exe(go:embed)
├── doc/ # 构建依赖(ffmpeg / upx 压缩包)
└── build.sh # 编译脚本(upx 压缩)
```
## 注意事项
- 默认使用**移动**模式,原文件会从源目录移走;同名文件跨磁盘时自动降级为复制 + 删除
- 每次运行生成独立的 UUID 目录,重复运行不会相互覆盖
- GIF 图片单独归入「图片_GIF」;GIF 视频按方向归入「视频_*_GIF」
- 视频处理依赖 Windows 平台的 `ffprobe.exe`(已内嵌),非 Windows 平台需自行调整
## License
Apache 2.0