aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M. <dstftw@gmail.com>2014-02-17 03:46:26 +0700
committerSergey M. <dstftw@gmail.com>2014-02-17 03:46:26 +0700
commit2db806b4aa0047002cf4c8b1ce6e3dd79ab8ee69 (patch)
treed64b93df5c2d52222a15619a71148e9a2ab15b2d
parent3f32c0ba4c9b7d9d654588d3bb0b88e41d4a0113 (diff)
Improve parse_duration
-rw-r--r--test/test_utils.py9
-rw-r--r--youtube_dl/utils.py2
2 files changed, 10 insertions, 1 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index 1ca5f5af8..84553b943 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -202,7 +202,16 @@ class TestUtil(unittest.TestCase):
self.assertEqual(parse_duration('1'), 1)
self.assertEqual(parse_duration('1337:12'), 80232)
self.assertEqual(parse_duration('9:12:43'), 33163)
+ self.assertEqual(parse_duration('12:00'), 720)
+ self.assertEqual(parse_duration('00:01:01'), 61)
self.assertEqual(parse_duration('x:y'), None)
+ self.assertEqual(parse_duration('3h11m53s'), 11513)
+ self.assertEqual(parse_duration('62m45s'), 3765)
+ self.assertEqual(parse_duration('6m59s'), 419)
+ self.assertEqual(parse_duration('49s'), 49)
+ self.assertEqual(parse_duration('0h0m0s'), 0)
+ self.assertEqual(parse_duration('0m0s'), 0)
+ self.assertEqual(parse_duration('0s'), 0)
def test_fix_xml_ampersands(self):
self.assertEqual(
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index dd03f058f..a192a420a 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1144,7 +1144,7 @@ def parse_duration(s):
return None
m = re.match(
- r'(?:(?:(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?(?P<secs>[0-9]+)$', s)
+ r'(?:(?:(?P<hours>[0-9]+)[:h])?(?P<mins>[0-9]+)[:m])?(?P<secs>[0-9]+)s?$', s)
if not m:
return None
res = int(m.group('secs'))