[eporner] Fix duration (Closes #4188)
authorPhilipp Hagemeister <phihag@phihag.de>
Sun, 16 Nov 2014 13:55:22 +0000 (14:55 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Sun, 16 Nov 2014 13:55:22 +0000 (14:55 +0100)
test/test_utils.py
youtube_dl/extractor/eporner.py
youtube_dl/utils.py

index edd95c3e33a358a82a7f6b361ab5cab4b1298ff9..0fa8731473317577f6ef7534d9ad5ead2064e32b 100644 (file)
@@ -218,6 +218,7 @@ class TestUtil(unittest.TestCase):
         self.assertEqual(parse_duration('0m0s'), 0)
         self.assertEqual(parse_duration('0s'), 0)
         self.assertEqual(parse_duration('01:02:03.05'), 3723.05)
+        self.assertEqual(parse_duration('T30M38S'), 1838)
 
     def test_fix_xml_ampersands(self):
         self.assertEqual(
index bb231ecb1cd81577d41c9c16ec3e0156c4abcf3e..4de8d4bc5c9107ddc361a8351ea4a63d3da40783 100644 (file)
@@ -20,7 +20,7 @@ class EpornerIE(InfoExtractor):
             'display_id': 'Infamous-Tiffany-Teen-Strip-Tease-Video',
             'ext': 'mp4',
             'title': 'Infamous Tiffany Teen Strip Tease Video',
-            'duration': 194,
+            'duration': 1838,
             'view_count': int,
             'age_limit': 18,
         }
@@ -57,9 +57,7 @@ class EpornerIE(InfoExtractor):
             formats.append(fmt)
         self._sort_formats(formats)
 
-        duration = parse_duration(self._search_regex(
-            r'class="mbtim">([0-9:]+)</div>', webpage, 'duration',
-            fatal=False))
+        duration = parse_duration(self._html_search_meta('duration', webpage))
         view_count = str_to_int(self._search_regex(
             r'id="cinemaviews">\s*([0-9,]+)\s*<small>views',
             webpage, 'view count', fatal=False))
index 67be4a9ae43710fb86bf2087ab3bae4421688f3d..58897231d47eaabf1946d4ba4572ae1bbc9afb0f 100644 (file)
@@ -1115,7 +1115,12 @@ def parse_duration(s):
     s = s.strip()
 
     m = re.match(
-        r'(?i)(?:(?:(?P<hours>[0-9]+)\s*(?:[:h]|hours?)\s*)?(?P<mins>[0-9]+)\s*(?:[:m]|mins?|minutes?)\s*)?(?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*(?:s|secs?|seconds?)?$', s)
+        r'''(?ix)T?
+            (?:
+                (?:(?P<hours>[0-9]+)\s*(?:[:h]|hours?)\s*)?
+                (?P<mins>[0-9]+)\s*(?:[:m]|mins?|minutes?)\s*
+            )?
+            (?P<secs>[0-9]+)(?P<ms>\.[0-9]+)?\s*(?:s|secs?|seconds?)?$''', s)
     if not m:
         return None
     res = int(m.group('secs'))