diff --git a/README.md b/README.md index 4925e97..3006404 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ - **音频归类**:音频文件单独归入「音频」目录 - **异常兜底**:读取失败、不支持的格式自动归入「读取异常」「已忽略」目录 - **自动整理**:无需人工干预,扫描 → 分析 → 移动一次完成,跨磁盘自动降级为复制后删除 -- **全格式支持**:视频/音频以**内嵌的 ffprobe**(按系统自动内嵌 macOS/Windows 对应版本)作为最终判定依据,**凡是 ffmpeg 支持的格式都能识别**,不再依赖扩展名白名单 +- **全格式支持**:视频/音频以**内嵌的 ffprobe**(Windows 版)作为最终判定依据,**凡是 ffmpeg 支持的格式都能识别**,不再依赖扩展名白名单 - **媒体信息入库**:自动将文件的 MD5 与完整媒体信息(类型/宽高/时长/编码/容器等)存入根目录下的 `media-info.db`(SQLite,xorm 驱动),支持按字段查询与去重 ## 支持的格式 @@ -32,9 +32,9 @@ sh build.sh ``` - 依赖 Go 1.19+(`go.mod` 指定 1.19) -- 每个平台构建时只内嵌**本平台**的 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`) +- 构建时内嵌 **Windows 版 ffprobe**:`internal/probe/bin/ffprobe.exe`,需提前放置(未入库,见 `.gitignore`) +- `build.sh` 在 **Windows** 下 `go build` 后使用 `upx` 压缩,输出 `kenaito-media-picker.exe` +- 编译所需工具(ffmpeg / upx)压缩包已放在 `doc/` 目录,按需解压使用(upx 放置于项目根目录 `upx`) ## 使用方法 @@ -117,7 +117,7 @@ lightScore = 亮度 > 175 的像素占比 - 默认使用**移动**模式,原文件会从源目录移走;同名文件跨磁盘时自动降级为复制 + 删除 - 已整理文件全部移动到 `{当前目录名}-picker` 白名单目录内,重复运行会跳过该目录,并将新文件并入已有的分类目录 - GIF 图片单独归入「图片_GIF」;GIF 视频按方向归入「视频_*_GIF」 -- ffprobe 按系统内嵌(macOS/Windows),运行前释放到当前目录、结束后自动删除;若当前平台无内嵌版本,视频/音频将不处理 +- ffprobe 内嵌(Windows),运行前释放到当前目录、结束后自动删除 ## License diff --git a/build.sh b/build.sh index 1821e6b..49aa399 100644 --- a/build.sh +++ b/build.sh @@ -1,23 +1,13 @@ #!/bin/sh -# 构建脚本:按系统类型选择编译方式 -# Windows (MINGW/MSYS/CYGWIN): go build + upx 压缩 → kenaito-media-picker.exe -# macOS / Linux: 直接构建,不压缩 → kenaito-media-picker +# 构建脚本:Windows 平台编译,go build + upx 压缩 → kenaito-media-picker.exe +# Windows (MINGW/MSYS/CYGWIN): go build + upx 压缩 set -e -case "$(uname -s)" in - MINGW*|MSYS*|CYGWIN*) - echo "=== Windows: go build + upx 压缩" - rm -f kenaito-media-picker.exe kenaito-media-picker-release.exe - go build -o kenaito-media-picker-release.exe . - ./upx -o kenaito-media-picker.exe kenaito-media-picker-release.exe - rm -f kenaito-media-picker-release.exe - ;; - *) - echo "=== 非 Windows (macOS/Linux): 直接构建,不压缩" - rm -f kenaito-media-picker - go build -o kenaito-media-picker . - ;; -esac +echo "=== Windows: go build + upx 压缩" +rm -f kenaito-media-picker.exe kenaito-media-picker-release.exe +go build -o kenaito-media-picker-release.exe . +./upx -o kenaito-media-picker.exe kenaito-media-picker-release.exe +rm -f kenaito-media-picker-release.exe echo "=== 构建完成" diff --git a/internal/probe/ffprobe_embed_windows.go b/internal/probe/ffprobe_embed.go similarity index 87% rename from internal/probe/ffprobe_embed_windows.go rename to internal/probe/ffprobe_embed.go index a4e749c..466df13 100644 --- a/internal/probe/ffprobe_embed_windows.go +++ b/internal/probe/ffprobe_embed.go @@ -1,5 +1,3 @@ -//go:build windows - package probe import _ "embed" diff --git a/internal/probe/ffprobe_embed_darwin.go b/internal/probe/ffprobe_embed_darwin.go deleted file mode 100644 index 060dddb..0000000 --- a/internal/probe/ffprobe_embed_darwin.go +++ /dev/null @@ -1,8 +0,0 @@ -//go:build darwin - -package probe - -import _ "embed" - -//go:embed bin/ffprobe_mac -var embeddedFFprobe []byte // macOS 版 ffprobe(未入库,见 .gitignore) diff --git a/internal/probe/ffprobe_embed_unsupported.go b/internal/probe/ffprobe_embed_unsupported.go deleted file mode 100644 index 7a93b78..0000000 --- a/internal/probe/ffprobe_embed_unsupported.go +++ /dev/null @@ -1,6 +0,0 @@ -//go:build !darwin && !windows - -package probe - -// embeddedFFprobe 当前平台没有内嵌的 ffprobe -var embeddedFFprobe []byte diff --git a/main.go b/main.go index baae015..492ae37 100644 --- a/main.go +++ b/main.go @@ -28,7 +28,7 @@ func main() { res, err := scanner.Scan(scanner.Options{ RootDir: rootDir, SkipDir: pickerDir, - SkipNames: []string{store.DBFileName, probe.FFprobeExeName, "ffprobe_mac"}, + SkipNames: []string{store.DBFileName, probe.FFprobeExeName}, }) if err != nil { fmt.Println("=== 扫描失败:", err)