diff --git a/pysrt/srttime.py b/pysrt/srttime.py index 0481b68..a94087b 100644 --- a/pysrt/srttime.py +++ b/pysrt/srttime.py @@ -93,6 +93,19 @@ def __imul__(self, ratio): self.ordinal = int(round(self.ordinal * ratio)) return self + def __div__(self, ratio): + return self.from_ordinal(int(round(self.ordinal / ratio))) + + def __idiv__(self, ratio): + self.ordinal = int(round(self.ordinal / ratio)) + return self + + def __truediv__(self, ratio): + return self.__div__(ratio) + + def __itruediv__(self, ratio): + return self.__idiv__(ratio) + @classmethod def coerce(cls, other): """ @@ -130,7 +143,7 @@ def shift(self, *args, **kwargs): All arguments are optional and have a default value of 0. """ if 'ratio' in kwargs: - self *= kwargs.pop('ratio') + self /= kwargs.pop('ratio') self += self.__class__(*args, **kwargs) @classmethod diff --git a/tests/test_srtfile.py b/tests/test_srtfile.py index aceb18e..aede21b 100644 --- a/tests/test_srtfile.py +++ b/tests/test_srtfile.py @@ -128,7 +128,7 @@ def test_shift(self): srt_file.shift(1, 1, 1, 1) self.assertEqual(srt_file[0].end, (1, 1, 1, 1)) srt_file.shift(ratio=2) - self.assertEqual(srt_file[0].end, (2, 2, 2, 2)) + self.assertEqual(srt_file[0].end, (0, 30, 30, 500)) class TestText(unittest.TestCase): diff --git a/tests/test_srtitem.py b/tests/test_srtitem.py index f4a6f2f..d09bec8 100644 --- a/tests/test_srtitem.py +++ b/tests/test_srtitem.py @@ -81,7 +81,7 @@ def setUp(self): def test_italics_tag(self): self.item.text = "Hello world !" self.assertEqual(self.item.text_without_tags,'Hello world !') - + def test_bold_tag(self): self.item.text = "Hello world !" self.assertEqual(self.item.text_without_tags,'Hello world !') @@ -126,10 +126,10 @@ def test_shift_down(self): def test_shift_by_ratio(self): self.item.shift(ratio=2) - self.assertEqual(self.item.start, {'minutes': 2}) - self.assertEqual(self.item.end, {'minutes': 2, 'seconds': 40}) - self.assertEqual(self.item.duration, (0, 0, 40, 0)) - self.assertEqual(self.item.characters_per_second, 0.325) + self.assertEqual(self.item.start, {'seconds': 30}) + self.assertEqual(self.item.end, {'seconds': 40}) + self.assertEqual(self.item.duration, (0, 0, 10, 0)) + self.assertEqual(self.item.characters_per_second, 1.3) class TestOperators(unittest.TestCase): diff --git a/tests/test_srttime.py b/tests/test_srttime.py index 1eb6804..dfd4c6a 100644 --- a/tests/test_srttime.py +++ b/tests/test_srttime.py @@ -146,5 +146,15 @@ def test_imul(self): self.time *= 0.5 self.assertEqual(self.time, (1, 2, 3, 4)) + def test_div(self): + self.assertEqual(self.time / 0.5, SubRipTime(2, 4, 6, 8)) + self.assertEqual(self.time / 2, (0, 31, 1, 502)) + + def test_idiv(self): + self.time /= 0.5 + self.assertEqual(self.time, (2, 4, 6, 8)) + self.time /= 2 + self.assertEqual(self.time, (1, 2, 3, 4)) + if __name__ == '__main__': unittest.main()