From c0f88cb080950879bc8af5cf498ac3aa8a8c68fb Mon Sep 17 00:00:00 2001 From: MkvAutoSubset Date: Sun, 17 Oct 2021 20:17:58 +0800 Subject: Bump to 3.1.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加C函数导出 - 增加python调用的demo --- lib/ass.go | 14 +++++++------- lib/mkv.go | 14 ++++++++------ lib/shared.go | 20 +++++++++++++++++++- 3 files changed, 34 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/ass.go b/lib/ass.go index d1c114c..7482ac8 100644 --- a/lib/ass.go +++ b/lib/ass.go @@ -103,14 +103,14 @@ func (self *assProcessor) parse() bool { str += string(_k) } str = strings.TrimSpace(str) - str = reg.ReplaceAllString(str, "") - str += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - reg, _ = regexp.Compile("[1234567890]") - if reg.MatchString(str) { - str = reg.ReplaceAllString(str, "") - str += "1234567890" - } if str != "" { + str = reg.ReplaceAllString(str, "") + str += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + reg, _ = regexp.Compile("[1234567890]") + if reg.MatchString(str) { + str = reg.ReplaceAllString(str, "") + str += "1234567890" + } self.m[k] = new(fontInfo) self.m[k].str = str self.m[k].oldName = k diff --git a/lib/mkv.go b/lib/mkv.go index 6dd76c9..e5eeb85 100644 --- a/lib/mkv.go +++ b/lib/mkv.go @@ -90,7 +90,7 @@ func (self *mkvProcessor) DumpMKV(file, output string, subset bool) bool { asses = append(asses, f) } if len(asses) > 0 { - if !self.ASSFontSubset(asses, "", "") { + if !self.ASSFontSubset(asses, "", "", false) { ec++ } } @@ -227,7 +227,7 @@ func (self *mkvProcessor) CreateMKVs(vDir, sDir, fDir, tDir, oDir string, slang, tracks := make([]string, 0) if len(asses) > 0 { _ = os.RemoveAll(tDir) - if !self.ASSFontSubset(asses, fDir, "") { + if !self.ASSFontSubset(asses, fDir, "", false) { ec++ } else { __p := path.Join(p, "subsetted") @@ -272,7 +272,7 @@ func (self *mkvProcessor) MakeMKVs(dir, data, output, slang, sttlte string) bool return ec == 0 } -func (self *mkvProcessor) ASSFontSubset(files []string, fonts, output string) bool { +func (self *mkvProcessor) ASSFontSubset(files []string, fonts, output string, dirSafe bool) bool { if len(files) == 0 { return false } @@ -280,15 +280,17 @@ func (self *mkvProcessor) ASSFontSubset(files []string, fonts, output string) bo obj.files = files obj._fonts = fonts obj.output = output - d, _, _, _ := splitPath(obj.files[0]) if obj._fonts == "" { obj._fonts += path.Join(d, "fonts") } if obj.output == "" { - obj.output += path.Join(d, "subsetted") + obj.output = d + dirSafe = true + } + if dirSafe { + obj.output = path.Join(obj.output, "subseted") } - obj.fonts = findFonts(obj._fonts) return obj.parse() && obj.matchFonts() && obj.createFontsSubset() && obj.changeFontsName() && obj.replaceFontNameInAss() diff --git a/lib/shared.go b/lib/shared.go index 215ce7a..b0cfb2f 100644 --- a/lib/shared.go +++ b/lib/shared.go @@ -2,11 +2,15 @@ package mkvlib import ( "log" + "os" "os/exec" + "path/filepath" + "runtime" + "strings" ) const libName = "mkvlib" -const libVer = "1.0.0" +const libVer = "v1.0.2" const LibFName = libName + " " + libVer @@ -14,6 +18,20 @@ var _instance *mkvProcessor func GetInstance() *mkvProcessor { ec := 0 + n := "PATH" + s := ":" + if runtime.GOOS == "windows" { + n = "path" + s = ";" + } + p := os.Getenv(n) + if !strings.HasSuffix(p, s) { + p += s + } + e, _ := os.Executable() + e, _ = filepath.Split(e) + p += e + _ = os.Setenv(n, p) _, _ttx := exec.LookPath(ttx) _, _pyftsubset := exec.LookPath(pyftsubset) _, _mkvextract := exec.LookPath(mkvextract) -- cgit v1.2.1