Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Subtitles {
- private List<Subtitle> subtitles;
- public Subtitles() {
- subtitles = new ArrayList<Subtitle>();
- }
- @SuppressWarnings("resource")
- public int loadSubtitles(InputStream inputStream) {
- Scanner input = new Scanner(inputStream);
- String line;
- while (input.hasNextLine()) {
- line = input.nextLine();
- if (line.trim().length() == 0)
- break;
- int number = Integer.parseInt(line);
- String time = input.nextLine();
- StringBuilder text = new StringBuilder();
- while (input.hasNextLine()) {
- line = input.nextLine();
- if (line.trim().length() == 0) {
- break;
- }
- text.append(line);
- text.append("\n");
- }
- Subtitle sub = new Subtitle(number, time, text.toString());
- subtitles.add(sub);
- }
- return subtitles.size();
- }
- public void print() {
- for (Subtitle e : subtitles) {
- System.out.println(e);
- }
- }
- public void shift(int ms) {
- for (Subtitle e : subtitles) {
- e.shift(ms);
- }
- }
- }
- class Subtitle {
- private int number;
- private int textFrom;
- private int textTo;
- private String text;
- public Subtitle(int num, String time, String text) {
- this.number = num;
- String[] parts = time.split(" --> ");
- textFrom = fromStringToTime(parts[0]);
- textTo = fromStringToTime(parts[1]);
- this.text = text;
- }
- public int fromStringToTime(String time) {
- String[] parts = time.split(":");
- int hour = Integer.parseInt(parts[0]);
- int min = Integer.parseInt(parts[1]);
- parts = parts[2].split(",");
- int sec = Integer.parseInt(parts[0]);
- int ms = Integer.parseInt(parts[1]);
- int result = ms + sec * 1000 + min * 60 * 1000 + hour * 60 * 60 * 1000;
- return result;
- }
- public void shift(int ms) {
- textFrom += ms;
- textTo += ms;
- }
- public 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() {
- return String.format("%d\n%s --> %s\n%s", number, timeToString(textFrom), timeToString(textTo), text);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment