| @@ -338,6 +338,7 @@ class TestUtil(unittest.TestCase): | |||||||
|         self.assertEqual(unified_timestamp('UNKNOWN DATE FORMAT'), None) |         self.assertEqual(unified_timestamp('UNKNOWN DATE FORMAT'), None) | ||||||
|         self.assertEqual(unified_timestamp('May 16, 2016 11:15 PM'), 1463440500) |         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('Feb 7, 2016 at 6:35 pm'), 1454870100) | ||||||
|  |         self.assertEqual(unified_timestamp('2017-03-30T17:52:41Q'), 1490896361) | ||||||
|  |  | ||||||
|     def test_determine_ext(self): |     def test_determine_ext(self): | ||||||
|         self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4') |         self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4') | ||||||
|   | |||||||
| @@ -1194,6 +1194,11 @@ def unified_timestamp(date_str, day_first=True): | |||||||
|     # Remove AM/PM + timezone |     # Remove AM/PM + timezone | ||||||
|     date_str = re.sub(r'(?i)\s*(?:AM|PM)(?:\s+[A-Z]+)?', '', date_str) |     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): |     for expression in date_formats(day_first): | ||||||
|         try: |         try: | ||||||
|             dt = datetime.datetime.strptime(date_str, expression) - timezone + datetime.timedelta(hours=pm_delta) |             dt = datetime.datetime.strptime(date_str, expression) - timezone + datetime.timedelta(hours=pm_delta) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․