[![GoReportCard](http://goreportcard.com/badge/github.com/asticode/go-astisub)](http://goreportcard.com/report/github.com/asticode/go-astisub) [![GoDoc](https://godoc.org/github.com/asticode/go-astisub?status.svg)](https://godoc.org/github.com/asticode/go-astisub) [![Travis](https://travis-ci.org/asticode/go-astisub.svg?branch=master)](https://travis-ci.org/asticode/go-astisub#) [![Coveralls](https://coveralls.io/repos/github/asticode/go-astisub/badge.svg?branch=master)](https://coveralls.io/repos/github/asticode/go-astisub) This is a Golang library to manipulate subtitles. It allows you to manipulate `srt`, `stl`, `ttml`, `ssa/ass` and `webvtt` files for now. Available operations are `parsing`, `writing`, `syncing`, `fragmenting`, `unfragmenting`, `merging` and `optimizing`. # Installation To install the library and command line program, use the following: go get -u github.com/asticode/go-astisub/... # Using the library in your code WARNING: the code below doesn't handle errors for readibility purposes. However you SHOULD! ```go // Open subtitles s1, _ := astisub.OpenFile("/path/to/example.ttml") s2, _ := astisub.ReadFromSRT(bytes.NewReader([]byte("00:01:00.000 --> 00:02:00.000\nCredits"))) // Add a duration to every subtitles (syncing) s1.Add(-2*time.Second) // Fragment the subtitles s1.Fragment(2*time.Second) // Merge subtitles s1.Merge(s2) // Optimize subtitles s1.Optimize() // Unfragment the subtitles s1.Unfragment() // Write subtitles s1.Write("/path/to/example.srt") var buf = &bytes.Buffer{} s2.WriteToTTML(buf) ``` # Using the CLI If **astisub** has been installed properly you can: - convert any type of subtitle to any other type of subtitle: astisub convert -i example.srt -o example.ttml - fragment any type of subtitle: astisub fragment -i example.srt -f 2s -o example.out.srt - merge any type of subtitle into any other type of subtitle: astisub merge -i example.srt -i example.ttml -o example.out.srt - optimize any type of subtitle: astisub optimize -i example.srt -o example.out.srt - unfragment any type of subtitle: astisub unfragment -i example.srt -o example.out.srt - sync any type of subtitle: astisub sync -i example.srt -s "-2s" -o example.out.srt # Features and roadmap - [x] parsing - [x] writing - [x] syncing - [x] fragmenting/unfragmenting - [x] merging - [x] ordering - [x] optimizing - [x] .srt - [x] .ttml - [x] .vtt - [x] .stl - [x] .ssa/.ass - [ ] .teletext - [ ] .smi