From d34cea33c9a9aed2f330713efdcb375e198ee287 Mon Sep 17 00:00:00 2001 From: ac79b0c6 <105047743+ac79b0c6@users.noreply.github.com> Date: Sat, 7 May 2022 10:45:16 +0800 Subject: update mkvtool:fix caches --- README.md | 1 + mkvtool/go.mod | 5 +---- mkvtool/main.go | 11 +++++++---- mkvtool/utils.go | 9 +++++++++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a634ce4..aa0ad9e 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ ASS字幕字体子集化 MKV批量提取/生成 mkvtool -cc -s input #从${input}获取字体信息并创建缓存 #可选"-cp"参数:指定缓存文件的保存目录. + #可选"-clean"参数:清空缓存目录. ``` - 取得一个(或目录里所有)ass字幕文件所需要的全部字体 ```shell diff --git a/mkvtool/go.mod b/mkvtool/go.mod index 4d282ac..0c20219 100644 --- a/mkvtool/go.mod +++ b/mkvtool/go.mod @@ -2,10 +2,7 @@ module github.com/MkvAutoSubset/MkvAutoSubset/mkvtool go 1.18 -require ( - github.com/MkvAutoSubset/MkvAutoSubset/mkvlib v0.0.0-20220506111355-2978cfb6c703 - github.com/google/uuid v1.3.0 -) +require github.com/MkvAutoSubset/MkvAutoSubset/mkvlib v0.0.0-20220506111355-2978cfb6c703 require ( github.com/antchfx/xmlquery v1.3.10 // indirect diff --git a/mkvtool/main.go b/mkvtool/main.go index 12fd890..4d71da0 100644 --- a/mkvtool/main.go +++ b/mkvtool/main.go @@ -4,7 +4,6 @@ import ( "flag" "fmt" "github.com/MkvAutoSubset/MkvAutoSubset/mkvlib" - "github.com/google/uuid" "io" "io/ioutil" "log" @@ -17,7 +16,7 @@ import ( ) const appName = "MKV Tool" -const appVer = "v3.8.7" +const appVer = "v3.8.8" const tTitle = appName + " " + appVer var appFN = fmt.Sprintf("%s %s %s/%s", appName, appVer, runtime.GOOS, runtime.GOARCH) @@ -88,7 +87,7 @@ func main() { flag.BoolVar(&cc, "cc", false, "Create fonts cache.") flag.Var(asses, "a", "ASS files. (multiple & join ass mode)") flag.BoolVar(&n, "n", false, "Not do ass font subset & not change font name.") - flag.BoolVar(&clean, "clean", false, "Clean original file subtitles and fonts. (create mode only)") + flag.BoolVar(&clean, "clean", false, "Clean original file subtitles and fonts for create mode, or clean old caches for create cache mode.") flag.BoolVar(&ck, "ck", false, "Enable check mode.") flag.BoolVar(&cks, "cks", false, "Enable strict mode for check.") flag.StringVar(&sl, "sl", "chi", "Subtitle language. (create & make mode only)") @@ -161,7 +160,11 @@ func main() { } if cc && s != "" { - list := processer.CreateFontsCache(s, path.Join(cache_p, uuid.New().String()+".cache"), nil) + if clean { + _ = os.RemoveAll(cache_p) + } + p := path.Join(cache_p, path2MD5(s)+".cache") + list := processer.CreateFontsCache(s, p, nil) el := len(list) if el > 0 { ec++ diff --git a/mkvtool/utils.go b/mkvtool/utils.go index e60afe8..835e88c 100644 --- a/mkvtool/utils.go +++ b/mkvtool/utils.go @@ -1,7 +1,9 @@ package main import ( + "crypto/md5" "errors" + "fmt" "os" "path/filepath" "regexp" @@ -48,3 +50,10 @@ func splitPath(p string) (dir, name, ext, namewithoutext string) { } return } + +func path2MD5(p string) string { + p, _ = filepath.Abs(p) + h := md5.New() + h.Write([]byte(p)) + return fmt.Sprintf("%x", h.Sum(nil)) +} -- cgit v1.2.1