diff options
| author | b5f0d6c3 <[email protected]> | 2022-04-29 20:06:11 +0800 |
|---|---|---|
| committer | b5f0d6c3 <[email protected]> | 2022-04-29 20:06:11 +0800 |
| commit | 99c9b5b0d947067a6c6fd85e04b0739407667b07 (patch) | |
| tree | adb49b7013fb0d2a6faad654e7fbe1c530e5502a | |
| parent | d7d96a3703f7d2506936f54b7466100cc0f783b1 (diff) | |
update mkvlib:add not change font name opt
| -rw-r--r-- | mkvlib/ass.go | 103 | ||||
| -rw-r--r-- | mkvlib/mkv.go | 6 | ||||
| -rw-r--r-- | mkvlib/shared.go | 2 |
3 files changed, 65 insertions, 46 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index 9d93c57..65ad8aa 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -53,6 +53,7 @@ type assProcessor struct { _m map[string][]string fg map[string]string seps []string + rename bool } func (self *assProcessor) parse() bool { @@ -436,7 +437,11 @@ func (self *assProcessor) createFontSubset(font *fontInfo) bool { return false } if os.WriteFile(fn, []byte(font.str), os.ModePerm) == nil { - _fn := fmt.Sprintf("%s%s", font.newName, e) + n := font.newName + if !self.rename { + n = font.oldName + } + _fn := fmt.Sprintf("%s%s", n, e) _fn = path.Join(self.output, _fn) args := make([]string, 0) args = append(args, "--text-file="+fn) @@ -558,6 +563,9 @@ func (self *assProcessor) changeFontName(font *fontInfo) bool { } func (self *assProcessor) changeFontsName() bool { + if !self.rename { + return true + } ok := 0 l := len(self.m) wg := new(sync.WaitGroup) @@ -582,58 +590,63 @@ func (self *assProcessor) changeFontsName() bool { func (self *assProcessor) replaceFontNameInAss() bool { ec := 0 m := make(map[string]map[string]bool) - for _, v := range self.m { - for f, s := range self.subtitles { - if m[f] == nil { - m[f] = make(map[string]bool) - } - n := regexp.QuoteMeta(v.oldName) - reg, _ := regexp.Compile(fmt.Sprintf(`(Style:[^,\r\n]+,|\\fn)(@?)%s([,\\\}])`, n)) - if reg.MatchString(s) { - r := fmt.Sprintf("${1}${2}%s${3}", v.newName) - s = reg.ReplaceAllString(s, r) - m[f][v.oldName] = true - self.subtitles[f] = s + if self.rename { + for _, v := range self.m { + for f, s := range self.subtitles { + if m[f] == nil { + m[f] = make(map[string]bool) + } + n := regexp.QuoteMeta(v.oldName) + reg, _ := regexp.Compile(fmt.Sprintf(`(Style:[^,\r\n]+,|\\fn)(@?)%s([,\\\}])`, n)) + if reg.MatchString(s) { + r := fmt.Sprintf("${1}${2}%s${3}", v.newName) + s = reg.ReplaceAllString(s, r) + m[f][v.oldName] = true + self.subtitles[f] = s + } } } } for f, s := range self.subtitles { - comments := make([]string, 0) - comments = append(comments, "[Script Info]") - comments = append(comments, "; ----- Font subset begin -----") - for k, _ := range m[f] { - for _, v := range self.m { - if strings.Split(v.oldName, "^")[0] == k { - comments = append(comments, fmt.Sprintf("; Font subset: %s - %s", v.newName, k)) - break + if self.rename { + comments := make([]string, 0) + comments = append(comments, "[Script Info]") + comments = append(comments, "; ----- Font subset begin -----") + for k, _ := range m[f] { + for _, v := range self.m { + if strings.Split(v.oldName, "^")[0] == k { + comments = append(comments, fmt.Sprintf("; Font subset: %s - %s", v.newName, k)) + break + } } } - } - if len(comments) > 2 { - comments = append(comments, "") - comments = append(comments, "; Processed by "+LibFName+" at "+time.Now().Format("2006-01-02 15:04:05")) - comments = append(comments, "; ----- Font subset end -----") - comments = append(comments, "") - r := "[Script Info]\n" - _r := "\n" - if strings.Contains(s, "[Script Info]\r\n") { - r = "[Script Info]\r\n" - _r = "\r\n" - } - s = strings.Replace(s, r, strings.Join(comments, _r), 1) - _, n, _, _ := splitPath(f) - fn := path.Join(self.output, n) - ok := false - if os.WriteFile(fn, []byte(s), os.ModePerm) == nil { - ok = true - self._files = append(self._files, fn) - } else { - ec++ - } - if !ok { - printLog(self.lcb, `Failed to write the new ass file: "%s".`, fn) + if len(comments) > 2 { + comments = append(comments, "") + comments = append(comments, "; Processed by "+LibFName+" at "+time.Now().Format("2006-01-02 15:04:05")) + comments = append(comments, "; ----- Font subset end -----") + comments = append(comments, "") + r := "[Script Info]\n" + _r := "\n" + if strings.Contains(s, "[Script Info]\r\n") { + r = "[Script Info]\r\n" + _r = "\r\n" + } + s = strings.Replace(s, r, strings.Join(comments, _r), 1) } } + _, n, _, _ := splitPath(f) + fn := path.Join(self.output, n) + ok := false + if os.WriteFile(fn, []byte(s), os.ModePerm) == nil { + ok = true + self._files = append(self._files, fn) + } else { + ec++ + } + if !ok { + ec++ + printLog(self.lcb, `Failed to write the new ass file: "%s".`, fn) + } } return ec == 0 } diff --git a/mkvlib/mkv.go b/mkvlib/mkv.go index e195722..f0e16ec 100644 --- a/mkvlib/mkv.go +++ b/mkvlib/mkv.go @@ -42,6 +42,7 @@ type mkvProcessor struct { pf string cache string ass2bdnxml bool + nrename bool } func (self *mkvProcessor) GetMKVInfo(file string) *mkvInfo { @@ -304,6 +305,7 @@ func (self *mkvProcessor) ASSFontSubset(files []string, fonts, output string, di obj._fonts = fonts obj.output = output obj.lcb = lcb + obj.rename = !self.nrename d, _, _, _ := splitPath(obj.files[0]) if obj._fonts == "" { obj._fonts += path.Join(d, "fonts") @@ -375,3 +377,7 @@ func (self *mkvProcessor) Cache(p string) { func (self *mkvProcessor) MKS(mks bool) { self.mks = mks } + +func (self *mkvProcessor) NRename(nrename bool) { + self.nrename = nrename +} diff --git a/mkvlib/shared.go b/mkvlib/shared.go index dacc649..d881bec 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -11,7 +11,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v1.5.9" +const libVer = "v1.6.0" const LibFName = libName + " " + libVer |
