• Stars
    star
    463
  • Rank 94,661 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Manipulate subtitles in GO (.srt, .ssa/.ass, .stl, .ttml, .vtt (webvtt), teletext, etc.)

GoReportCard GoDoc Test Coveralls

This is a Golang library to manipulate subtitles.

It allows you to manipulate srt, stl, ttml, ssa/ass, webvtt and teletext files for now.

Available operations are parsing, writing, applying linear correction, syncing, fragmenting, unfragmenting, merging and optimizing.

Installation

To install the library:

go get github.com/asticode/go-astisub

To install the CLI:

go install github.com/asticode/go-astisub/astisub        

Using the library in your code

WARNING: the code below doesn't handle errors for readibility purposes. However you SHOULD!

// Open subtitles
s1, _ := astisub.OpenFile("/path/to/example.ttml")
s2, _ := astisub.ReadFromSRT(bytes.NewReader([]byte("1\n00: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()

// Apply linear correction
s1.ApplyLinearCorrection(1*time.Second, 2*time.Second, 5*time.Second, 7*time.Second)

// 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
    
  • apply linear correction to any type of subtitle:

      astisub apply-linear-correction -i example.srt -a1 1s -d1 2s -a2 5s -d2 7s -o example.out.srt
    
  • 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

  • parsing
  • writing
  • syncing
  • fragmenting/unfragmenting
  • merging
  • ordering
  • optimizing
  • linear correction
  • .srt
  • .ttml
  • .vtt
  • .stl
  • .ssa/.ass
  • .teletext
  • .smi

More Repositories

1

go-astilectron

Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron)
Go
4,745
star
2

go-astits

Demux and mux MPEG Transport Streams (.ts) natively in GO
Go
479
star
3

go-astilectron-demo

Discover the power of Astilectron through a demo app
Go
397
star
4

go-astiencoder

Go
308
star
5

astilectron

Electron app that provides an API over a TCP socket that allows executing Electron's method as well as capturing Electron's events
JavaScript
274
star
6

go-astibob

Golang framework to build an AI that can understand and speak back to you, and everything else you want
Go
239
star
7

go-astideepspeech

Golang bindings for Mozilla's DeepSpeech speech-to-text library
Go
170
star
8

go-astilectron-bundler

Bundle your Astilectron app with ease
Go
125
star
9

go-astiav

Better C bindings for ffmpeg in GO
Go
86
star
10

go-astilectron-bootstrap

Create a one-window application using Astilectron
Go
60
star
11

go-astitodo

Parse TODOs in your GO code
Go
60
star
12

go-asticoqui

Golang bindings for Coqui's speech-to-text library
Go
29
star
13

go-astikit

Set of golang helpers that don't require any external dependencies
Go
29
star
14

go-astivid

Set of video tools available through a nice UI
Go
27
star
15

go-astisrt

SRT server, client and socket in GO
Go
26
star
16

go-astitools

Set of augmented functions for the GO programming language (http://golang.org)
Go
17
star
17

go-astitello

Golang implementation of DJI Tello SDK
Go
10
star
18

go-texttospeech

Text to speech manager relying on the OS speech recognition software
Go
10
star
19

go-astiffprobe

Use your FFProbe binary to gather quality information about your video files
Go
10
star
20

go-astisplash

Cross platform splash screen
Go
9
star
21

go-astichat

A lightweight encrypted chat written in GO
Go
8
star
22

go-astilog

Golang logger
Go
8
star
23

js-toolbox

Set of components and methods to ease HTML/CSS/JS developments
JavaScript
6
star
24

go-astiws

Wrapper on top of websockets
Go
5
star
25

go-bindata

Hard fork from https://github.com/jteeuwen/go-bindata after it has disappeared
Go
5
star
26

go-stopwatch

Deprecated
Go
5
star
27

go-astitesseract

Wrapper for the Tesseract OCR project
Go
5
star
28

go-asticrypt

Send encrypted messages through your favourite apps
Go
4
star
29

go-astiffmpeg

Use your FFMpeg binary to manipulate your video files
Go
4
star
30

go-astiocr

Go
4
star
31

go-keyboardemulator

Cross-OS keyboard emulator that can take control of your keyboard through code
Go
4
star
32

go-slack

TODO: clone and rename
Go
2
star
33

go-astimysql

Wrapper on top of mysql to provide proper configuration
Go
2
star
34

go-astiratp

Clients for the RATP APIs
Go
2
star
35

go-astiamqp

Wrapper on top of amqp to provide proper configuration and error handling
Go
2
star
36

go-bob

Bob is an AI capable of taking over your keyboard based on voice commands
Go
2
star
37

go-astiproxy

Wrapper on top of http and url to provide proper proxy configuration
Go
2
star
38

go-astichartjs

Go
2
star
39

asticrypt

Encrypt your conversations and stop being tracked when using your favorite apps
JavaScript
2
star
40

php-deployment-manager

Deployment manager to enable automatic deployment of PHP or GO projects on your server after a GIT push
PHP
2
star
41

go-astislack

Clear your Slack history easily
Go
1
star
42

go-astimgo

Wrapper on top of mgo to provide proper configuration
Go
1
star
43

go-ftp

TODO: clone and rename
Go
1
star
44

go-speechtotext

Speech to text manager relying on the OS speech recognition software
1
star
45

go-astiredis

Wrapper on top of redis to provide proper configuration
Go
1
star
46

go-test

Sandbox for GO
Go
1
star
47

go-astiudp

Go
1
star
48

go-astilectron-deployer

Go
1
star
49

go-astitwitter

Wrapper on top of Twitter API
Go
1
star
50

go-astibank

Simple tool to monitor your bank accounts
Go
1
star
51

test

1
star
52

php-cache-manager

Cache manager for PHP
PHP
1
star
53

go-gozzle

Deprecated
Go
1
star
54

go-astibike

Should I travel by bike this week?
Go
1
star
55

go-pprof

TODO: merge stopwatch + add ticker
Go
1
star
56

go-astipatch

Patch manager written in GO
Go
1
star
57

go-astibob-demos

Official astibob demos
Go
1
star
58

php-data-mapper

Mapper and Repository factories that implements the Data Mapper structure
PHP
1
star
59

python-asticredits

1
star
60

js-astiyoga

JavaScript
1
star
61

php-file-manager

File manager to handle cross-datasources copy as well as simple file actions on the most common datasources
PHP
1
star