Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- class Subtitle{
- private int num;
- private String startTime;
- private String endTime;
- private List<String> text;
- public Subtitle(int num, String startTime, String endTime, List<String> text) {
- this.num = num;
- this.startTime = startTime;
- this.endTime = endTime;
- this.text = text;
- }
- public int timeInMs(String time){
- String [] parts = time.split(":");
- int hours = Integer.parseInt(parts[0]) * 60 * 60 * 1000;
- int minutes = Integer.parseInt(parts[1]) * 60 * 1000;
- String [] parts2 = parts[2].split(",");
- int seconds = Integer.parseInt(parts2[0]) * 1000;
- return hours+minutes+seconds+Integer.parseInt(parts2[1]);
- }
- public void shift(int ms){
- int startInMs = timeInMs(startTime);
- int endInMs = timeInMs(endTime);
- this.startTime = timeToString(startInMs+ms);
- this.endTime = timeToString(endInMs+ms);
- }
- public String timeToString (int time){
- long hours = time/ (60*60*1000);
- time %= (60*60*1000);
- long minutes = time / (60*1000);
- time %= (60*1000);
- long seconds = time / 1000;
- long milis = time % 1000;
- return String.format("%02d:%02d:%02d,%03d",hours,minutes,seconds,milis);
- }
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append(num+"\n");
- sb.append(startTime+" --> "+endTime+"\n");
- text.forEach(text -> sb.append(text+"\n"));
- return sb.toString();
- }
- }
- class Subtitles{
- List<Subtitle> subtitles;
- public Subtitles() {
- this.subtitles = new ArrayList<>();
- }
- public int loadSubtitles(InputStream inputStream){
- Scanner in = new Scanner(System.in);
- while (in.hasNextLine()){
- int num = Integer.parseInt(in.nextLine());
- String line = in.nextLine();
- String [] parts = line.split("\\s+");
- String startTime = parts[0];
- String endTime = parts[2];
- List<String> text = new ArrayList<>();
- while (in.hasNextLine()){
- String textLine = in.nextLine();
- if (textLine.equals(""))
- break;
- text.add(textLine);
- }
- subtitles.add(new Subtitle(num,startTime,endTime,text));
- }
- return subtitles.size();
- }
- public void print(){
- subtitles.forEach(System.out::println);
- }
- public void shift(int ms){
- subtitles.forEach(subtitle -> subtitle.shift(ms));
- }
- }
- public class SubtitlesTest {
- public static void main(String[] args) {
- Subtitles subtitles = new Subtitles();
- int n = subtitles.loadSubtitles(System.in);
- System.out.println("+++++ ORIGINIAL SUBTITLES +++++");
- subtitles.print();
- int shift = n * 37;
- shift = (shift % 2 == 1) ? -shift : shift;
- System.out.println(String.format("SHIFT FOR %d ms", shift));
- subtitles.shift(shift);
- System.out.println("+++++ SHIFTED SUBTITLES +++++");
- subtitles.print();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement