jsrt
jsrt copied to clipboard
A small SRT parser and editor in Java
jsrt
A small SRT parser and editor in Java. SRT is a subtitle file format.
Download
https://github.com/fredyw/jsrt/releases
How to Build
jsrt uses Gradle build system and requires Java 8 to build.
Building jsrt JAR
gradle
The JAR will be created in dist directory.
Running jsrt-gui
java -jar dist/jsrt-gui-<version>.jar
Screenshot
Examples
in.srt
1
00:00:20,000 --> 00:00:24,400
Hello World. This is a long text.
Bye World. This is a short text.
2
00:00:24,600 --> 00:00:27,800
Foo Bar
Bar Foo
out1.srt
1
16:17:55,370 --> 16:17:55,370
Hello
World
2
16:17:55,370 --> 16:17:55,370
Bye
World
out2.srt
1
00:00:05,000 --> 00:00:07,000
Test
2
00:00:20,100 --> 00:00:24,500
Hello
World.
This is a
long text.
Bye World.
This is a
short
text.
3
00:00:24,600 --> 00:00:27,800
Foo Bar
Bar Foo
4
00:01:05,000 --> 00:01:07,000
Test
Main.java
package examples;
import java.io.File;
import java.util.Arrays;
import java.util.Date;
import org.fredy.jsrt.api.SRT;
import org.fredy.jsrt.api.SRTInfo;
import org.fredy.jsrt.api.SRTReader;
import org.fredy.jsrt.api.SRTTimeFormat;
import org.fredy.jsrt.api.SRTWriter;
import org.fredy.jsrt.editor.SRTEditor;
public class Main {
private static void print(SRTInfo info) {
for (SRT s : info) {
System.out.println("Number: " + s.number);
System.out.println("Start time: " + SRTTimeFormat.format(s.startTime));
System.out.println("End time: " + SRTTimeFormat.format(s.endTime));
System.out.println("Texts:");
for (String line : s.text) {
System.out.println(" " + line);
}
System.out.println();
}
}
private static void testRead() {
SRTInfo info = SRTReader.read(new File("in.srt"));
print(info);
}
private static void testWrite() {
SRTInfo info = new SRTInfo();
Date d = new Date();
info.add(new SRT(1, d, d, "Hello", "World"));
info.add(new SRT(2, d, d, "Bye", "World"));
File f = new File("out1.srt");
f.deleteOnExit();
SRTWriter.write(f, info);
}
private static void testEdit() {
SRTInfo info = SRTReader.read(new File("in.srt"));
SRTEditor.updateText(info, 1, 10);
SRTEditor.updateTime(info, 1, SRTTimeFormat.Type.MILLISECOND, 100);
SRTEditor.prependSubtitle(info, "00:00:05,000", "00:00:07,000",
Arrays.asList("Test"));
SRTEditor.appendSubtitle(info, "00:01:05,000", "00:01:07,000",
Arrays.asList("Test"));
print(info);
// Write it back
File f = new File("out2.srt");
f.deleteOnExit();
SRTWriter.write(f, info);
}
public static void main(String[] args) {
testRead();
testWrite();
testEdit();
}
}