diff options
| -rw-r--r-- | test/test_utils.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/rtlnl.py | 6 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 4 | 
3 files changed, 9 insertions, 2 deletions
| diff --git a/test/test_utils.py b/test/test_utils.py index e26cc5b0c..0953db371 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -219,6 +219,7 @@ class TestUtil(unittest.TestCase):          self.assertEqual(parse_duration('0h0m0s'), 0)          self.assertEqual(parse_duration('0m0s'), 0)          self.assertEqual(parse_duration('0s'), 0) +        self.assertEqual(parse_duration('01:02:03.05'), 3723.05)      def test_fix_xml_ampersands(self):          self.assertEqual( diff --git a/youtube_dl/extractor/rtlnl.py b/youtube_dl/extractor/rtlnl.py index 190c8f226..2d9511d5e 100644 --- a/youtube_dl/extractor/rtlnl.py +++ b/youtube_dl/extractor/rtlnl.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals  import re  from .common import InfoExtractor +from ..utils import parse_duration  class RtlXlIE(InfoExtractor): @@ -20,6 +21,7 @@ class RtlXlIE(InfoExtractor):                  'onze mobiele apps.',              'timestamp': 1408051800,              'upload_date': '20140814', +            'duration': 576.880,          },          'params': {              # We download the first bytes of the first fragment, it can't be @@ -35,6 +37,7 @@ class RtlXlIE(InfoExtractor):          info = self._download_json(              'http://www.rtl.nl/system/s4m/vfd/version=2/uuid=%s/fmt=flash/' % uuid,              uuid) +          material = info['material'][0]          episode_info = info['episodes'][0] @@ -44,8 +47,9 @@ class RtlXlIE(InfoExtractor):          return {              'id': uuid, -            'title': '%s - %s' % (progname, subtitle),  +            'title': '%s - %s' % (progname, subtitle),              'formats': self._extract_f4m_formats(f4m_url, uuid),              'timestamp': material['original_date'],              'description': episode_info['synopsis'], +            'duration': parse_duration(material.get('duration')),          } diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 2b05fd7b7..53977cd2a 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1338,7 +1338,7 @@ def parse_duration(s):          return None      m = re.match( -        r'(?:(?:(?P<hours>[0-9]+)[:h])?(?P<mins>[0-9]+)[:m])?(?P<secs>[0-9]+)s?(?::[0-9]+)?$', s) +        r'(?:(?:(?P<hours>[0-9]+)[:h])?(?P<mins>[0-9]+)[:m])?(?P<secs>[0-9]+)s?(?::[0-9]+)?(?P<ms>\.[0-9]+)?$', s)      if not m:          return None      res = int(m.group('secs')) @@ -1346,6 +1346,8 @@ def parse_duration(s):          res += int(m.group('mins')) * 60          if m.group('hours'):              res += int(m.group('hours')) * 60 * 60 +    if m.group('ms'): +        res += float(m.group('ms'))      return res | 
