From 8c382de8c87260d68b9c10e2bf687cbd53e3beb8 Mon Sep 17 00:00:00 2001 From: b5f0d6c3 Date: Fri, 6 May 2022 01:24:12 +0800 Subject: update --- mkvlib/ass.go | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'mkvlib/ass.go') 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 -- cgit v1.2.1