Skip to content

Commit

Permalink
♿ Perf: use flag
Browse files Browse the repository at this point in the history
  • Loading branch information
soxft committed Nov 5, 2024
1 parent 6903ef0 commit d9482c7
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 25 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Quexif
# QuExif

> 自动为 Qumagie 备份的手机照片, 添加 Exif 信息, 以便于在相册中按照时间线查看
> 自动为 QuMagie 备份的手机照片, 添加 Exif 信息, 以便于在相册中按照时间线查看

## 原理

Qumagie 备份时, 需要取消选择 原始文件名称, 这样备份的文件名会采用日期格式, 例如 `2019-01-01 12.00.00.jpg`
QuMagie 备份时, 需要取消选择 原始文件名称, 这样备份的文件名会采用日期格式, 例如 `2019-01-01 12.00.00.jpg`

此工具将读取时间信息, 并将其写入 Exif 的 DateTime 和 DateTimeOriginal 信息,此时 Qumagie 将会将此时间作为 照片的拍摄日期。
此工具将读取时间信息, 并将其写入 Exif 的 DateTime 和 DateTimeOriginal 信息,此时 QuMagie 将会将此时间作为 照片的拍摄日期。

## 使用

Expand All @@ -18,7 +18,7 @@
3. 在命令行中执行

```shell
$ quexif-windows-amd64-{{version}}.exe Z:\
$ quexif-windows-amd64-{{version}}.exe -p Z:\
```

### 在 Qnap 中运行
Expand All @@ -35,5 +35,5 @@

$ chmod +x /share/Public/quexif-linux-amd64-{{version}}

$ /share/Public/quexif-linux-amd64-{{version}} /share/Public/Photo
$ /share/Public/quexif-linux-amd64-{{version}} -p /share/Public/Photo
```
20 changes: 20 additions & 0 deletions fg/fg.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package fg

import (
"flag"
)

var Mode string
var Path string
var DateTime string
var DateTpl = "2006-01-02 15.04.05"

// Parse 解析命令行参数
func Parse() {
flag.StringVar(&Mode, "m", "qumagie", "操作模式: qumagie (QuMagie 备份照片处理), dir (指定文件夹批量修改 EXIF时间), dirDate (按照上级文件夹名称修改 EXIF 时间)")
flag.StringVar(&Path, "p", "", "文件夹路径")
flag.StringVar(&DateTime, "datetime", "", "日期时间")
flag.StringVar(&DateTpl, "tpl", "2006-01-02 15.04.05", "日期时间模板, 默认为 '2006-01-02 15.04.05' 请参照 Golang 时间 layout 设置")

flag.Parse()
}
48 changes: 29 additions & 19 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"log"
"os"
"path/filepath"
"photo_exif_do/fg"
"strings"
"time"
)
Expand Down Expand Up @@ -159,24 +160,9 @@ func removeEditStr(path string) {
}
}

func main() {
// 读取命令行参数 - 目录
if len(os.Args) < 2 {
log.Fatal("Usage: exif_pass <directory>")
}

// 安全 QA
log.Println("请确保已经设置了快照,程序将会直接修改文件的 exif 元数据, 建议在使用前选择少量照片进行测试后再使用")
log.Println("您确认要继续吗? (y/n)")
var confirm string
fmt.Scanln(&confirm)
if confirm != "y" {
log.Fatal("已取消")
}

// 读取目录
dir := os.Args[1]
files, err := os.ReadDir(dir)
// quMagie 处理 QuMagie 备份的照片
func quMagie(path string) {
files, err := os.ReadDir(path)
if err != nil {
log.Fatal(err)
}
Expand All @@ -185,10 +171,12 @@ func main() {

// 遍历目录下的文件
for _, file := range files {
// QuMagie 不会有子文件夹, 所以不需要递归
if file.IsDir() {
continue
}
filePath := filepath.Join(dir, file.Name())

filePath := filepath.Join(path, file.Name())
if strings.HasSuffix(strings.ToLower(filePath), ".jpg") || strings.HasSuffix(strings.ToLower(filePath), ".jpeg") {
if err := setDateIfNone(filePath, counter); err != nil {
log.Printf("[FAIL](%d) %s: %v\n", counter, filePath, err)
Expand All @@ -202,3 +190,25 @@ func main() {
counter++
}
}

func main() {
fg.Parse()

// 安全 QA
log.Println("请确保已经设置了快照,程序将会直接修改文件的 exif 元数据, 建议在使用前选择少量照片进行测试后再使用")
log.Println("您确认要继续吗? (y/n)")
var confirm string

if _, err := fmt.Scanln(&confirm); err != nil {
return
} else if confirm != "y" {
log.Fatal("已取消")
}

// 读取目录
switch fg.Mode {
default:
quMagie(fg.Path)
}

}

0 comments on commit d9482c7

Please sign in to comment.