diff options
| author | b5f0d6c3 <[email protected]> | 2022-05-06 01:24:12 +0800 |
|---|---|---|
| committer | b5f0d6c3 <[email protected]> | 2022-05-06 01:24:12 +0800 |
| commit | 8c382de8c87260d68b9c10e2bf687cbd53e3beb8 (patch) | |
| tree | 51d7b3fcb01fd99347e12e3262d42da7b37182ef /mkvlib/ass.go | |
| parent | 76722d11d3d99c8ea93f6c906e22f697e568b7da (diff) | |
update
Diffstat (limited to 'mkvlib/ass.go')
| -rw-r--r-- | mkvlib/ass.go | 29 |
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 |
