Files
kenaito-media-picker/internal/config/config.go
T
odboy 66faed75a2 feat: 增加 EXIF 旋转图片自动转正
- 解析 JPEG EXIF Orientation,方向 5/6/7/8 的竖拍横存图不再误入横屏目录
- 配置 ffmpeg 时用 ffmpeg 物理转正像素并保留原 EXIF;无 ffmpeg 时按显示方向归类
- 新增 ffmpeg.path / organize.rotateImages 配置项
- 补充 EXIF 解析与旋转幂等测试
2025-05-19 21:15:58 +08:00

56 lines
1.9 KiB
Go
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.
// Package config 负责读程序的配置文件(application.properties)。
//
// 大白话理解:程序启动时先看看配置文件里写了啥,没写就用默认值。
// 配置文件就在程序旁边,叫 application.properties,用记事本就能改。
package config
import (
"github.com/magiconair/properties"
)
// Config 程序配置:
// - Port:网页服务用哪个端口(默认 8080)
// - Dsn:数据库文件叫什么(默认 media-info.db,放在程序目录下)
// - AutoOpen:启动后要不要自动打开浏览器
// - FFmpegPath:ffmpeg 程序路径(用于把带 EXIF 旋转标记的图片转正);留空自动在 PATH 里找
// - RotateImages:整理时是否自动转正带 EXIF 旋转标记的图片(默认 true)
type Config struct {
Port int
Dsn string
AutoOpen bool
FFmpegPath string
RotateImages bool
}
// appConfig 当前生效的配置(程序运行期间一直不变)。
var appConfig Config
// GetAppConfig 返回当前生效的配置。
func GetAppConfig() Config {
return appConfig
}
// LoadAppConfig 从 application.properties 读配置;文件不存在就用默认值。
func LoadAppConfig() {
// 先给一套默认值
appConfig = Config{Port: 8080, Dsn: "media-info.db", AutoOpen: true, RotateImages: true}
p, err := properties.LoadFile("application.properties", properties.UTF8)
if err != nil {
return // 没有配置文件,就用默认值
}
// 配置文件里写了就覆盖默认值
if port := p.GetInt("server.port", 0); port > 0 {
appConfig.Port = port
}
if v, ok := p.Get("database.dsn"); ok && v != "" {
appConfig.Dsn = v
}
appConfig.AutoOpen = p.GetBool("server.autoOpen", true)
// ffmpeg 路径:留空表示自动在 PATH 里找
if v, ok := p.Get("ffmpeg.path"); ok && v != "" {
appConfig.FFmpegPath = v
}
appConfig.RotateImages = p.GetBool("organize.rotateImages", true)
}