Advertisement
lameski

Prevod

Aug 19th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.io.PrintWriter;
  3. import java.text.DateFormat;
  4. import java.text.Format;
  5. import java.text.SimpleDateFormat;
  6. import java.time.LocalDateTime;
  7. import java.time.format.DateTimeFormatter;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.Formatter;
  11. import java.util.Scanner;
  12.  
  13. class TimeObject
  14. {
  15. int id;
  16. int timeFrom, timeTo;
  17. String quote;
  18. TimeObject(int id, String time,String quote)
  19. {
  20. this.id = id;
  21. String[] parts = time.split("-->");
  22. this.timeFrom = stringToTime(parts[0].trim());
  23. this.timeTo = stringToTime(parts[1].trim());
  24. this.quote = quote;
  25. }
  26.  
  27. public void shift(int ms)
  28. {
  29. timeFrom+=ms;
  30. timeTo+=ms;
  31. }
  32.  
  33. static int stringToTime(String time)
  34. {
  35. String[] parts = time.split(",");
  36. int mili = Integer.parseInt(parts[1]);
  37. parts = parts[0].split(":");
  38. int h = Integer.parseInt(parts[0]);
  39. int min = Integer.parseInt(parts[1]);
  40. int sec = Integer.parseInt(parts[2]);
  41.  
  42. mili+=sec*1000;
  43. mili+=min*60*1000;
  44. mili+=h*60*60*1000;
  45. return mili;
  46. }
  47. static String timeToString(int time)
  48. {
  49. int h = time/(60*60*1000);
  50. time = time%(60*60*1000);
  51. int m = time/(60*1000);
  52. time = time%(60*1000);
  53. int s = time/1000;
  54. int ms = time%1000;
  55. return String.format("%02d:%02d:%02d,%03d", h,m,s,ms);
  56. }
  57. @Override
  58. public String toString() {
  59. // TODO Auto-generated method stub
  60.  
  61. return String.format("%d\n%s --> %s\n%s", id,timeToString(timeFrom), timeToString(timeTo), quote);
  62. }
  63. }
  64.  
  65. class Subtitles
  66. {
  67. ArrayList<TimeObject> objects;
  68.  
  69. Subtitles()
  70. {
  71. objects = new ArrayList<>();
  72. }
  73.  
  74. public int loadSubtitles(InputStream inputStream)
  75. {
  76. int counter = 0;
  77. Scanner in = new Scanner(inputStream);
  78. while(in.hasNextLine())
  79. {
  80. int id = Integer.parseInt(in.nextLine());
  81. String time = in.nextLine();
  82. StringBuilder sb = new StringBuilder();
  83. while(true)
  84. {
  85. if(in.hasNextLine()){
  86. String line = in.nextLine();
  87. //System.out.println(line);
  88. if(line.equals(""))
  89. break;
  90. else
  91. {
  92. //System.out.println(line);
  93. sb.append(line);
  94. sb.append("\n");
  95. }
  96. }
  97. else break;
  98. }
  99. sb.append("\n");
  100.  
  101. TimeObject to = new TimeObject(id, time, sb.toString());
  102. objects.add(to);
  103. counter++;
  104. }
  105. // System.out.println("TEST");
  106. return counter;
  107. }
  108.  
  109. public void print()
  110. {
  111. PrintWriter pw = new PrintWriter(System.out);
  112. for(TimeObject t : objects)
  113. {
  114. pw.print(t);
  115. }
  116. pw.flush();
  117. }
  118. void shift(int ms)
  119. {
  120. objects.stream().forEach(t ->{
  121. t.shift(ms);
  122. });
  123. }
  124. }
  125.  
  126. public class SubtitlesTest {
  127. public static void main(String[] args) {
  128. Subtitles subtitles = new Subtitles();
  129. int n = subtitles.loadSubtitles(System.in);
  130. System.out.println("+++++ ORIGINIAL SUBTITLES +++++");
  131. subtitles.print();
  132. int shift = n * 37;
  133. shift = (shift % 2 == 1) ? -shift : shift;
  134. System.out.println(String.format("SHIFT FOR %d ms", shift));
  135. subtitles.shift(shift);
  136. System.out.println("+++++ SHIFTED SUBTITLES +++++");
  137. subtitles.print();
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement