commit: 056653bbb1b94ba04f331ed4c27a1c0d24fe1e30
parent c3206d02e94ce98c6467762a228a9e58616c6d8f
Author: Sergey M․ <dstftw@gmail.com>
Date: Sun, 29 Oct 2017 07:04:48 +0700
[utils] Add support for zero years and months in parse_duration
Diffstat:
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/test/test_utils.py b/test/test_utils.py
@@ -540,6 +540,7 @@ class TestUtil(unittest.TestCase):
self.assertEqual(parse_duration('87 Min.'), 5220)
self.assertEqual(parse_duration('PT1H0.040S'), 3600.04)
self.assertEqual(parse_duration('PT00H03M30SZ'), 210)
+ self.assertEqual(parse_duration('P0Y0M0DT0H4M20.880S'), 260.88)
def test_fix_xml_ampersands(self):
self.assertEqual(
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
@@ -1835,10 +1835,20 @@ def parse_duration(s):
days, hours, mins, secs, ms = m.groups()
else:
m = re.match(
- r'''(?ix)(?:P?T)?
+ r'''(?ix)(?:P?
+ (?:
+ [0-9]+\s*y(?:ears?)?\s*
+ )?
+ (?:
+ [0-9]+\s*m(?:onths?)?\s*
+ )?
+ (?:
+ [0-9]+\s*w(?:eeks?)?\s*
+ )?
(?:
(?P<days>[0-9]+)\s*d(?:ays?)?\s*
)?
+ T)?
(?:
(?P<hours>[0-9]+)\s*h(?:ours?)?\s*
)?