evandroeisinger / go-subtitles

Go lang subtitles package

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

subtitles Go

Golang package for Subtitles manipulation.

go get -u github.com/evandroeisinger/go-subtitles

Supported formats

  • SRT
  • WebVTT

Available operations:

  • Parsing
  • Writing
  • Concatenating
  • Merging
  • Shifting
  • Cutting
  • Slicing

Usage

// Loads subtitle from file 
sub, err := subtitles.Load("example.srt")
if err != nil {
    fmt.Println(err)
}

// Writes subtitle to VTT format (writes according to extension format)
content, _ := subtitles.Write(sub, "example.vtt")

...

Concating

// Loads subtitle from file 
sub_a, _ := subtitles.Load("sub_a.srt")
sub_b, _ := subtitles.Load("sub_a.srt")

// Concats subtitles fixing blocks timestamps
sub_ab := subtitles.Concat(sub_a, sub_b)

...

Merging

// Loads subtitle from file 
sub_a, _ := subtitles.Load("sub_a.srt")
sub_b, _ := subtitles.Load("sub_a.srt")

// Merges subtitles preserving timestamps
sub_ab := subtitles.Merge(sub_a, sub_b)

...

Shifting

// Loads subtitle from file 
sub, _ := subtitles.Load("example.srt")

// Shifts up all subtitle blocks timestamp
sub.Shift(time.ParseDuration("1m30s"))

// Shifts down all subtitle blocks timestamp
sub.Shift(time.ParseDuration("-1m30s"))

...

Cutting

// Loads subtitle from file 
sub, _ := subtitles.Load("example.srt")

startAt := time.ParseDuration("30s")
finishAt := time.ParseDuration("2m")

// Cuts subtitle preserving blocks
sub.Cut(startAt, finishAt)

...

About

Go lang subtitles package

License:MIT License


Languages

Language:Go 100.0%