Блок задач

5. Один класс

Темы
Сложность 4

Задача «Разбор SRT-субтитров»

Разработать программу, которая осуществляет разбор и упорядочивание субтитров, прочитанных из файла в простом формате SRT.

Входные данные

Файл в формате SRT.

Пример.

1 
00:00:01,000 --> 00:00:05,500
Раз
два
три

2 
00:00:06,000 --> 00:00:09,500
четыре пять

3
00:00:10,000 --> 00:00:15,500
вышел 
зайчик 
погулять

4
00:00:11,000 --> 00:00:19,500
белый зайчик

5
00:00:12,000 --> 00:00:14,500
наглый зайчик

6
00:00:13,000 --> 00:00:16,500
вышел
и ушел

7
00:00:15,000 --> 00:00:17,500
топтун

8
00:00:19,500 --> 00:00:19,600
вот и всё

Задача

Необходимо реализовать программу, которая вычитывает субтитры из файла, и превращает их в отсортированный по времени набор команд SHOW TEXT \ HIDE TEXT (см. пример в выходных данных). При этом не гарантируется, что во входном файле субтитры будут в корректном, отсортированном по времени порядке. Так же допускается наличие во входном файле "пересекающихся" и даже "вложенных" по времени субтитров (см. пример во входных данных).

Тестирование

Необходимо реализовать набор тестов, проверяющих работу модулей. В частности необходимо проверить корректность методов чтения и упорядочивания субтитров для ряда частных случаев:

  • некорректные номера записей,
  • некорректные времена показа / скрытия,
  • отсутствие в конце файла 2 пустых строк,
  • пересечение времён показа двух и более записей (обратить внимание на порядок объединения строк),
  • "вложенность" времён показа двух и более записей,

и другие случаи на усмотрение студента.

Выходные данные

Файл с командами показа / скрытия субтитров.

Для приведённого выше примера вывод должен быть примерно следующим:

at 1,00 show 'Раз
два
три'
at 5,50 show ''
at 6,00 show 'четыре пять'
at 9,50 show ''
at 10,00 show 'вышел
зайчик
погулять'
at 11,00 show 'вышел
зайчик
погулять
белый зайчик'
at 12,00 show 'вышел
зайчик
погулять
белый зайчик
наглый зайчик'
at 13,00 show 'вышел
зайчик
погулять
белый зайчик
наглый зайчик
вышел
и ушел'
at 14,50 show 'вышел
зайчик
погулять
белый зайчик
вышел
и ушел'
at 15,00 show 'вышел
зайчик
погулять
белый зайчик
вышел
и ушел
топтун'
at 15,50 show 'белый зайчик
вышел
и ушел
топтун'
at 16,50 show 'белый зайчик
топтун'
at 17,50 show 'белый зайчик'
at 19,50 show 'вот и всё'
at 19,60 show ''