Advertisement
Martina312

[НП] - Преводи

Aug 24th, 2020
1,933
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.27 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Scanner;
  5.  
  6. class Subtitle{
  7.     private int num;
  8.     private String startTime;
  9.     private String endTime;
  10.     private List<String> text;
  11.  
  12.     public Subtitle(int num, String startTime, String endTime, List<String> text) {
  13.         this.num = num;
  14.         this.startTime = startTime;
  15.         this.endTime = endTime;
  16.         this.text = text;
  17.     }
  18.  
  19.     public int timeInMs(String time){
  20.         String [] parts = time.split(":");
  21.         int hours = Integer.parseInt(parts[0]) * 60 * 60 * 1000;
  22.         int minutes = Integer.parseInt(parts[1]) * 60 * 1000;
  23.         String [] parts2 = parts[2].split(",");
  24.         int seconds = Integer.parseInt(parts2[0]) * 1000;
  25.         return hours+minutes+seconds+Integer.parseInt(parts2[1]);
  26.     }
  27.  
  28.     public void shift(int ms){
  29.         int startInMs = timeInMs(startTime);
  30.         int endInMs = timeInMs(endTime);
  31.         this.startTime = timeToString(startInMs+ms);
  32.         this.endTime = timeToString(endInMs+ms);
  33.     }
  34.  
  35.     public String timeToString (int time){
  36.         long hours = time/ (60*60*1000);
  37.         time %=  (60*60*1000);
  38.         long minutes = time / (60*1000);
  39.         time %= (60*1000);
  40.         long seconds = time / 1000;
  41.         long milis = time % 1000;
  42.  
  43.         return String.format("%02d:%02d:%02d,%03d",hours,minutes,seconds,milis);
  44.     }
  45.  
  46.     @Override
  47.     public String toString() {
  48.         StringBuilder sb = new StringBuilder();
  49.         sb.append(num+"\n");
  50.         sb.append(startTime+" --> "+endTime+"\n");
  51.         text.forEach(text -> sb.append(text+"\n"));
  52.         return sb.toString();
  53.     }
  54. }
  55. class Subtitles{
  56.     List<Subtitle> subtitles;
  57.  
  58.     public Subtitles() {
  59.         this.subtitles = new ArrayList<>();
  60.     }
  61.  
  62.     public int loadSubtitles(InputStream inputStream){
  63.         Scanner in = new Scanner(System.in);
  64.  
  65.         while (in.hasNextLine()){
  66.             int num = Integer.parseInt(in.nextLine());
  67.  
  68.             String line = in.nextLine();
  69.             String [] parts = line.split("\\s+");
  70.             String startTime = parts[0];
  71.             String endTime = parts[2];
  72.  
  73.             List<String> text = new ArrayList<>();
  74.             while (in.hasNextLine()){
  75.                 String textLine = in.nextLine();
  76.                 if (textLine.equals(""))
  77.                     break;
  78.                 text.add(textLine);
  79.             }
  80.             subtitles.add(new Subtitle(num,startTime,endTime,text));
  81.         }
  82.         return subtitles.size();
  83.     }
  84.  
  85.     public void print(){
  86.         subtitles.forEach(System.out::println);
  87.     }
  88.  
  89.     public void shift(int ms){
  90.         subtitles.forEach(subtitle -> subtitle.shift(ms));
  91.     }
  92. }
  93. public class SubtitlesTest {
  94.     public static void main(String[] args) {
  95.         Subtitles subtitles = new Subtitles();
  96.         int n = subtitles.loadSubtitles(System.in);
  97.         System.out.println("+++++ ORIGINIAL SUBTITLES +++++");
  98.         subtitles.print();
  99.         int shift = n * 37;
  100.         shift = (shift % 2 == 1) ? -shift : shift;
  101.         System.out.println(String.format("SHIFT FOR %d ms", shift));
  102.         subtitles.shift(shift);
  103.         System.out.println("+++++ SHIFTED SUBTITLES +++++");
  104.         subtitles.print();
  105.     }
  106. }
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement