diff options
| -rw-r--r-- | test/test_utils.py | 2 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 13 | 
2 files changed, 11 insertions, 4 deletions
| diff --git a/test/test_utils.py b/test/test_utils.py index 918a7a9ef..0c34f0e55 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -425,6 +425,8 @@ class TestUtil(unittest.TestCase):          self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266)          self.assertEqual(parse_iso8601('2014-03-23T22:04:26Z'), 1395612266)          self.assertEqual(parse_iso8601('2014-03-23T22:04:26.1234Z'), 1395612266) +        self.assertEqual(parse_iso8601('2015-09-29T08:27:31.727'), 1443515251) +        self.assertEqual(parse_iso8601('2015-09-29T08-27-31.727'), None)      def test_strip_jsonp(self):          stripped = strip_jsonp('cb ([ {"id":"532cb",\n\n\n"x":\n3}\n]\n);') diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index a61e47646..558c9c7d5 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -814,9 +814,11 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):      if date_str is None:          return None +    date_str = re.sub(r'\.[0-9]+', '', date_str) +      if timezone is None:          m = re.search( -            r'(\.[0-9]+)?(?:Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)', +            r'(?:Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)',              date_str)          if not m:              timezone = datetime.timedelta() @@ -829,9 +831,12 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):                  timezone = datetime.timedelta(                      hours=sign * int(m.group('hours')),                      minutes=sign * int(m.group('minutes'))) -    date_format = '%Y-%m-%d{0}%H:%M:%S'.format(delimiter) -    dt = datetime.datetime.strptime(date_str, date_format) - timezone -    return calendar.timegm(dt.timetuple()) +    try: +        date_format = '%Y-%m-%d{0}%H:%M:%S'.format(delimiter) +        dt = datetime.datetime.strptime(date_str, date_format) - timezone +        return calendar.timegm(dt.timetuple()) +    except ValueError: +        pass  def unified_strdate(date_str, day_first=True): | 
