[utils] Improve unified_timestamp
authorSergey M․ <dstftw@gmail.com>
Sun, 30 Apr 2017 14:07:30 +0000 (21:07 +0700)
committerSergey M․ <dstftw@gmail.com>
Sun, 30 Apr 2017 14:45:53 +0000 (21:45 +0700)
Seen at http://zaq1.pl/video/xev0e

test/test_utils.py
youtube_dl/utils.py

index 9e1808e6bd10dbdab55884476c6a7d7446128f15..05fdc0e959793c0ebbe79581b2802e8c18e95867 100644 (file)
@@ -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')
index 9d7798ee8943e613ba96662ddc0e40e22061aa54..86fc5ccaca9530b12ad93f9b637f60fccbaf99c9 100644 (file)
@@ -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)