aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-04-30 21:07:30 +0700
committerSergey M․ <dstftw@gmail.com>2017-04-30 21:45:53 +0700
commitdeef31955bb6106939606cd2a8b677db700055e3 (patch)
treec01db015e2d80f4d26d0e09290220a34a8c3c8f6
parent9dac2cec2d7e31b65cf063164b3a99f257a86a63 (diff)
[utils] Improve unified_timestamp
Seen at http://zaq1.pl/video/xev0e
-rw-r--r--test/test_utils.py1
-rw-r--r--youtube_dl/utils.py5
2 files changed, 6 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index 9e1808e6b..05fdc0e95 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -338,6 +338,7 @@ class TestUtil(unittest.TestCase):
self.assertEqual(unified_timestamp('UNKNOWN DATE FORMAT'), None)
self.assertEqual(unified_timestamp('May 16, 2016 11:15 PM'), 1463440500)
self.assertEqual(unified_timestamp('Feb 7, 2016 at 6:35 pm'), 1454870100)
+ self.assertEqual(unified_timestamp('2017-03-30T17:52:41Q'), 1490896361)
def test_determine_ext(self):
self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4')
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 9d7798ee8..86fc5ccac 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1194,6 +1194,11 @@ def unified_timestamp(date_str, day_first=True):
# Remove AM/PM + timezone
date_str = re.sub(r'(?i)\s*(?:AM|PM)(?:\s+[A-Z]+)?', '', date_str)
+ # Remove unrecognized timezones from ISO 8601 alike timestamps
+ m = re.search(r'\d{1,2}:\d{1,2}(?:\.\d+)?(?P<tz>\s*[A-Z]+)$', date_str)
+ if m:
+ date_str = date_str[:-len(m.group('tz'))]
+
for expression in date_formats(day_first):
try:
dt = datetime.datetime.strptime(date_str, expression) - timezone + datetime.timedelta(hours=pm_delta)