Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.InputStream;
- import java.io.PrintWriter;
- import java.text.DateFormat;
- import java.text.Format;
- import java.text.SimpleDateFormat;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.Formatter;
- import java.util.Scanner;
- class TimeObject
- {
- int id;
- int timeFrom, timeTo;
- String quote;
- TimeObject(int id, String time,String quote)
- {
- this.id = id;
- String[] parts = time.split("-->");
- this.timeFrom = stringToTime(parts[0].trim());
- this.timeTo = stringToTime(parts[1].trim());
- this.quote = quote;
- }
- public void shift(int ms)
- {
- timeFrom+=ms;
- timeTo+=ms;
- }
- static int stringToTime(String time)
- {
- String[] parts = time.split(",");
- int mili = Integer.parseInt(parts[1]);
- parts = parts[0].split(":");
- int h = Integer.parseInt(parts[0]);
- int min = Integer.parseInt(parts[1]);
- int sec = Integer.parseInt(parts[2]);
- mili+=sec*1000;
- mili+=min*60*1000;
- mili+=h*60*60*1000;
- return mili;
- }
- static String timeToString(int time)
- {
- int h = time/(60*60*1000);
- time = time%(60*60*1000);
- int m = time/(60*1000);
- time = time%(60*1000);
- int s = time/1000;
- int ms = time%1000;
- return String.format("%02d:%02d:%02d,%03d", h,m,s,ms);
- }
- @Override
- public String toString() {
- // TODO Auto-generated method stub
- return String.format("%d\n%s --> %s\n%s", id,timeToString(timeFrom), timeToString(timeTo), quote);
- }
- }
- class Subtitles
- {
- ArrayList<TimeObject> objects;
- Subtitles()
- {
- objects = new ArrayList<>();
- }
- public int loadSubtitles(InputStream inputStream)
- {
- int counter = 0;
- Scanner in = new Scanner(inputStream);
- while(in.hasNextLine())
- {
- int id = Integer.parseInt(in.nextLine());
- String time = in.nextLine();
- StringBuilder sb = new StringBuilder();
- while(true)
- {
- if(in.hasNextLine()){
- String line = in.nextLine();
- //System.out.println(line);
- if(line.equals(""))
- break;
- else
- {
- //System.out.println(line);
- sb.append(line);
- sb.append("\n");
- }
- }
- else break;
- }
- sb.append("\n");
- TimeObject to = new TimeObject(id, time, sb.toString());
- objects.add(to);
- counter++;
- }
- // System.out.println("TEST");
- return counter;
- }
- public void print()
- {
- PrintWriter pw = new PrintWriter(System.out);
- for(TimeObject t : objects)
- {
- pw.print(t);
- }
- pw.flush();
- }
- void shift(int ms)
- {
- objects.stream().forEach(t ->{
- t.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