summaryrefslogtreecommitdiff
path: root/mkvlib
diff options
context:
space:
mode:
Diffstat (limited to 'mkvlib')
-rw-r--r--mkvlib/ass.go103
-rw-r--r--mkvlib/mkv.go6
-rw-r--r--mkvlib/shared.go2
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