92 lines
2.5 KiB
Markdown
92 lines
2.5 KiB
Markdown
|
[![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
|