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