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()