Exemplo n.º 1
0
    def test_add_frames(self):
        time_code = SccTimeCode.parse("01:02:03:04")
        time_code.add_frames(30)
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(4, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertFalse(time_code.is_drop_frame())
        self.assertEqual(111724, time_code.get_nb_frames())
        self.assertEqual(Fraction(111724, 30), time_code.to_temporal_offset())
        self.assertEqual("01:02:04:04", str(time_code))

        time_code = SccTimeCode.parse("00:00:59;29")
        time_code.add_frames()
        self.assertEqual(0, time_code.get_hours())
        self.assertEqual(1, time_code.get_minutes())
        self.assertEqual(0, time_code.get_seconds())
        self.assertEqual(2, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(1_800, time_code.get_nb_frames())
        self.assertEqual(Fraction(1800, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("00:01:00;02", str(time_code))

        time_code = SccTimeCode.parse("00:19:59;29")
        time_code.add_frames()
        self.assertEqual(0, time_code.get_hours())
        self.assertEqual(20, time_code.get_minutes())
        self.assertEqual(0, time_code.get_seconds())
        self.assertEqual(0, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(35_964, time_code.get_nb_frames())
        self.assertEqual(Fraction(35964, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("00:20:00;00", str(time_code))
Exemplo n.º 2
0
  def check_caption(self, paragraph: P, caption_id: str, begin: str, end: str, *children):
    self.assertEqual(caption_id, paragraph.get_id())
    self.assertEqual(SccTimeCode.parse(begin).to_temporal_offset(), paragraph.get_begin())
    self.assertEqual(SccTimeCode.parse(end).to_temporal_offset(), paragraph.get_end())

    p_children = list(paragraph)
    self.assertEqual(len(children), len(p_children))

    for (index, child) in enumerate(p_children):
      expected_child = children[index]
      if isinstance(expected_child, str):
        texts = list(child)
        self.assertEqual(expected_child, texts[0].get_text())
      else:
        self.assertEqual(expected_child, Br)
Exemplo n.º 3
0
  def test_scc_line_from_str(self):
    line_str = "01:03:27:29	94ae 94ae 9420 9420 94f2 94f2 c845 d92c 2054 c845 5245 ae80 942c 942c 8080 8080 942f 942f"
    scc_line = SccLine.from_str(line_str)
    self.assertEqual(18, len(scc_line.scc_words))
    self.assertEqual(SccTimeCode(1, 3, 27, 29).to_temporal_offset(), scc_line.time_code.to_temporal_offset())

    self.assertIsNone(SccLine.from_str(""))
    self.assertIsNone(SccLine.from_str("Hello world!"))
Exemplo n.º 4
0
    def test_from_frames(self):
        time_code = SccTimeCode.from_frames(111694)
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertFalse(time_code.is_drop_frame())
        self.assertEqual(111694, time_code.get_nb_frames())
        self.assertEqual("01:02:03:04", str(time_code))

        time_code = SccTimeCode.from_frames(111582, drop_frame=True)
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(111582, time_code.get_nb_frames())
        self.assertEqual("01:02:03;04", str(time_code))
Exemplo n.º 5
0
    def test_parse_drop_frame_time_code(self):
        time_code = SccTimeCode.parse("01:02:03;04")
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(111582, time_code.get_nb_frames())
        self.assertEqual(Fraction(111582, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("01:02:03;04", str(time_code))

        time_code = SccTimeCode.parse("01;02;03;04")
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(111582, time_code.get_nb_frames())
        self.assertEqual(Fraction(111582, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("01:02:03;04", str(time_code))

        time_code = SccTimeCode.parse("01:02:03.04")
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(111582, time_code.get_nb_frames())
        self.assertEqual(Fraction(111582, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("01:02:03;04", str(time_code))

        time_code = SccTimeCode.parse("01.02.03.04")
        self.assertEqual(1, time_code.get_hours())
        self.assertEqual(2, time_code.get_minutes())
        self.assertEqual(3, time_code.get_seconds())
        self.assertEqual(4, time_code.get_frames())
        self.assertTrue(time_code.is_drop_frame())
        self.assertEqual(111582, time_code.get_nb_frames())
        self.assertEqual(Fraction(111582, Fraction(30000, 1001)),
                         time_code.to_temporal_offset())
        self.assertEqual("01:02:03;04", str(time_code))
Exemplo n.º 6
0
 def test_parse_non_drop_frame_time_code(self):
     time_code = SccTimeCode.parse("01:02:03:04")
     self.assertEqual(1, time_code.get_hours())
     self.assertEqual(2, time_code.get_minutes())
     self.assertEqual(3, time_code.get_seconds())
     self.assertEqual(4, time_code.get_frames())
     self.assertFalse(time_code.is_drop_frame())
     self.assertEqual(111694, time_code.get_nb_frames())
     self.assertAlmostEqual(3723.133,
                            float(time_code.to_temporal_offset()),
                            delta=0.001)
     self.assertEqual("01:02:03:04", str(time_code))
Exemplo n.º 7
0
  def from_str(line: str) -> Optional[SccLine]:
    """Creates a SCC line instance from the specified string"""
    if not line:
      return None

    regex = re.compile(SCC_LINE_PATTERN)
    match = regex.match(line)

    if match is None:
      return None

    time_code = match.group(1)
    time_offset = SccTimeCode.parse(time_code)

    hex_words = line.split('\t')[1].split(' ')
    scc_words = [SccWord.from_str(hex_word) for hex_word in hex_words if hex_word]
    return SccLine(time_offset, scc_words)
Exemplo n.º 8
0
    def test_time_code_frames_conversion(self):
        time_code = SccTimeCode.from_frames(1795)
        self.assertEqual("00:00:59:25", str(time_code))
        self.assertEqual(1795, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1796)
        self.assertEqual("00:00:59:26", str(time_code))
        self.assertEqual(1796, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1797)
        self.assertEqual("00:00:59:27", str(time_code))
        self.assertEqual(1797, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1798)
        self.assertEqual("00:00:59:28", str(time_code))
        self.assertEqual(1798, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1799)
        self.assertEqual("00:00:59:29", str(time_code))
        self.assertEqual(1799, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1800)
        self.assertEqual("00:01:00:00", str(time_code))
        self.assertEqual(1800, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1801)
        self.assertEqual("00:01:00:01", str(time_code))
        self.assertEqual(1801, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1802)
        self.assertEqual("00:01:00:02", str(time_code))
        self.assertEqual(1802, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1803)
        self.assertEqual("00:01:00:03", str(time_code))
        self.assertEqual(1803, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1804)
        self.assertEqual("00:01:00:04", str(time_code))
        self.assertEqual(1804, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1805)
        self.assertEqual("00:01:00:05", str(time_code))
        self.assertEqual(1805, time_code.get_nb_frames())

        time_code = SccTimeCode.from_frames(17977)
        self.assertEqual("00:09:59:07", str(time_code))
        self.assertEqual(17977, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17978)
        self.assertEqual("00:09:59:08", str(time_code))
        self.assertEqual(17978, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17979)
        self.assertEqual("00:09:59:09", str(time_code))
        self.assertEqual(17979, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17980)
        self.assertEqual("00:09:59:10", str(time_code))
        self.assertEqual(17980, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17981)
        self.assertEqual("00:09:59:11", str(time_code))
        self.assertEqual(17981, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17982)
        self.assertEqual("00:09:59:12", str(time_code))
        self.assertEqual(17982, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17983)
        self.assertEqual("00:09:59:13", str(time_code))
        self.assertEqual(17983, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17984)
        self.assertEqual("00:09:59:14", str(time_code))
        self.assertEqual(17984, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17985)
        self.assertEqual("00:09:59:15", str(time_code))
        self.assertEqual(17985, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17986)
        self.assertEqual("00:09:59:16", str(time_code))
        self.assertEqual(17986, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17987)
        self.assertEqual("00:09:59:17", str(time_code))
        self.assertEqual(17987, time_code.get_nb_frames())
Exemplo n.º 9
0
    def test_drop_frame_time_code_frames_conversion(self):
        time_code = SccTimeCode.from_frames(1795, drop_frame=True)
        self.assertEqual("00:00:59;25", str(time_code))
        self.assertEqual(1795, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1796, drop_frame=True)
        self.assertEqual("00:00:59;26", str(time_code))
        self.assertEqual(1796, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1797, drop_frame=True)
        self.assertEqual("00:00:59;27", str(time_code))
        self.assertEqual(1797, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1798, drop_frame=True)
        self.assertEqual("00:00:59;28", str(time_code))
        self.assertEqual(1798, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1799, drop_frame=True)
        self.assertEqual("00:00:59;29", str(time_code))
        self.assertEqual(1799, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1800, drop_frame=True)
        self.assertEqual("00:01:00;02", str(time_code))
        self.assertEqual(1800, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1801, drop_frame=True)
        self.assertEqual("00:01:00;03", str(time_code))
        self.assertEqual(1801, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1802, drop_frame=True)
        self.assertEqual("00:01:00;04", str(time_code))
        self.assertEqual(1802, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1803, drop_frame=True)
        self.assertEqual("00:01:00;05", str(time_code))
        self.assertEqual(1803, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1804, drop_frame=True)
        self.assertEqual("00:01:00;06", str(time_code))
        self.assertEqual(1804, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(1805, drop_frame=True)
        self.assertEqual("00:01:00;07", str(time_code))
        self.assertEqual(1805, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17977, drop_frame=True)

        self.assertEqual("00:09:59;25", str(time_code))
        self.assertEqual(17977, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17978, drop_frame=True)
        self.assertEqual("00:09:59;26", str(time_code))
        self.assertEqual(17978, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17979, drop_frame=True)
        self.assertEqual("00:09:59;27", str(time_code))
        self.assertEqual(17979, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17980, drop_frame=True)
        self.assertEqual("00:09:59;28", str(time_code))
        self.assertEqual(17980, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17981, drop_frame=True)
        self.assertEqual("00:09:59;29", str(time_code))
        self.assertEqual(17981, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17982, drop_frame=True)
        self.assertEqual("00:10:00;00", str(time_code))
        self.assertEqual(17982, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17983, drop_frame=True)
        self.assertEqual("00:10:00;01", str(time_code))
        self.assertEqual(17983, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17984, drop_frame=True)
        self.assertEqual("00:10:00;02", str(time_code))
        self.assertEqual(17984, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17985, drop_frame=True)
        self.assertEqual("00:10:00;03", str(time_code))
        self.assertEqual(17985, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17986, drop_frame=True)
        self.assertEqual("00:10:00;04", str(time_code))
        self.assertEqual(17986, time_code.get_nb_frames())
        time_code = SccTimeCode.from_frames(17987, drop_frame=True)
        self.assertEqual("00:10:00;05", str(time_code))
        self.assertEqual(17987, time_code.get_nb_frames())