summaryrefslogtreecommitdiff
path: root/mkvlib/ass.go
diff options
context:
space:
mode:
authorb5f0d6c3 <[email protected]>2022-05-06 01:24:12 +0800
committerb5f0d6c3 <[email protected]>2022-05-06 01:24:12 +0800
commit8c382de8c87260d68b9c10e2bf687cbd53e3beb8 (patch)
tree51d7b3fcb01fd99347e12e3262d42da7b37182ef /mkvlib/ass.go
parent76722d11d3d99c8ea93f6c906e22f697e568b7da (diff)
update
Diffstat (limited to 'mkvlib/ass.go')
-rw-r--r--mkvlib/ass.go29
1 files changed, 28 insertions, 1 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go
index 40cb54d..4bd8ee8 100644
--- a/mkvlib/ass.go
+++ b/mkvlib/ass.go
@@ -61,6 +61,33 @@ type assProcessor struct {
strict bool
}
+func (self *assProcessor) getLength(p string) time.Duration {
+ f, err := openFile(p, true, false)
+ if err != nil {
+ return 0
+ }
+ data, err := io.ReadAll(f)
+ if err != nil {
+ return 0
+ }
+ str := string(data)
+ opt := parser.SSAOptions{}
+ subtitle, err := parser.ReadFromSSAWithOptions(strings.NewReader(str), opt)
+ if err == nil {
+ var s, e time.Duration
+ for _, v := range subtitle.Items {
+ if v.StartAt < s {
+ s = v.StartAt
+ }
+ if v.EndAt > e {
+ e = v.EndAt
+ }
+ }
+ return e - s
+ }
+ return 0
+}
+
func (self *assProcessor) parse() bool {
ec := 0
self.seps = []string{"-", " "}
@@ -70,7 +97,7 @@ func (self *assProcessor) parse() bool {
if err != nil {
ec++
} else {
- data, _ := io.ReadAll(f)
+ data, err := io.ReadAll(f)
str := string(data)
if err == nil {
self.subtitles[file] = str