From 6a68bb574acaf4df3f3f01d3330498cad5101773 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Sun, 16 Nov 2014 14:55:22 +0100 Subject: [PATCH] [eporner] Fix duration (Closes #4188) --- test/test_utils.py | 1 + youtube_dl/extractor/eporner.py | 6 ++---- youtube_dl/utils.py | 7 ++++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/test/test_utils.py b/test/test_utils.py index edd95c3e3..0fa873147 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -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( diff --git a/youtube_dl/extractor/eporner.py b/youtube_dl/extractor/eporner.py index bb231ecb1..4de8d4bc5 100644 --- a/youtube_dl/extractor/eporner.py +++ b/youtube_dl/extractor/eporner.py @@ -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:]+)', 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*views', webpage, 'view count', fatal=False)) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 67be4a9ae..58897231d 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1115,7 +1115,12 @@ def parse_duration(s): s = s.strip() m = re.match( - r'(?i)(?:(?:(?P[0-9]+)\s*(?:[:h]|hours?)\s*)?(?P[0-9]+)\s*(?:[:m]|mins?|minutes?)\s*)?(?P[0-9]+)(?P\.[0-9]+)?\s*(?:s|secs?|seconds?)?$', s) + r'''(?ix)T? + (?: + (?:(?P[0-9]+)\s*(?:[:h]|hours?)\s*)? + (?P[0-9]+)\s*(?:[:m]|mins?|minutes?)\s* + )? + (?P[0-9]+)(?P\.[0-9]+)?\s*(?:s|secs?|seconds?)?$''', s) if not m: return None res = int(m.group('secs'))