mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-09-29 22:27:59 +00:00
Do not extract timestamp on 3.8 if timezone is not present
This commit is contained in:
parent
a7e0a8452b
commit
a1af9ffe27
|
@ -28,6 +28,7 @@
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
InAdvancePagedList,
|
InAdvancePagedList,
|
||||||
LazyList,
|
LazyList,
|
||||||
|
NO_DEFAULT,
|
||||||
OnDemandPagedList,
|
OnDemandPagedList,
|
||||||
Popen,
|
Popen,
|
||||||
age_restricted,
|
age_restricted,
|
||||||
|
@ -771,6 +772,7 @@ def test_parse_iso8601(self):
|
||||||
self.assertEqual(parse_iso8601('2014-03-23T23:04:26+0100'), 1395612266)
|
self.assertEqual(parse_iso8601('2014-03-23T23:04:26+0100'), 1395612266)
|
||||||
self.assertEqual(parse_iso8601('2014-03-23T23:04:26-07:00'), 1395641066)
|
self.assertEqual(parse_iso8601('2014-03-23T23:04:26-07:00'), 1395641066)
|
||||||
self.assertEqual(parse_iso8601('2014-03-23T23:04:26', timezone=dt.timedelta(hours=-7)), 1395641066)
|
self.assertEqual(parse_iso8601('2014-03-23T23:04:26', timezone=dt.timedelta(hours=-7)), 1395641066)
|
||||||
|
self.assertEqual(parse_iso8601('2014-03-23T23:04:26', timezone=NO_DEFAULT), None)
|
||||||
# default does not override timezone in date_str
|
# default does not override timezone in date_str
|
||||||
self.assertEqual(parse_iso8601('2014-03-23T23:04:26-07:00', timezone=dt.timedelta(hours=-10)), 1395641066)
|
self.assertEqual(parse_iso8601('2014-03-23T23:04:26-07:00', timezone=dt.timedelta(hours=-10)), 1395641066)
|
||||||
self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266)
|
self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266)
|
||||||
|
|
|
@ -4557,7 +4557,7 @@ def get_pacific_tz():
|
||||||
# Python 3.8 should be deprecated soon
|
# Python 3.8 should be deprecated soon
|
||||||
# This fallback may make the timestamp slightly inaccurate for 3.8 users.
|
# This fallback may make the timestamp slightly inaccurate for 3.8 users.
|
||||||
if sys.version_info < (3, 9):
|
if sys.version_info < (3, 9):
|
||||||
return dt.timedelta(hours=-7)
|
return NO_DEFAULT
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
return dt.datetime.now(ZoneInfo('US/Pacific')).utcoffset()
|
return dt.datetime.now(ZoneInfo('US/Pacific')).utcoffset()
|
||||||
|
|
||||||
|
|
|
@ -1162,7 +1162,10 @@ def extract_timezone(date_str, default=None):
|
||||||
hours=sign * int(m.group('hours')),
|
hours=sign * int(m.group('hours')),
|
||||||
minutes=sign * int(m.group('minutes')))
|
minutes=sign * int(m.group('minutes')))
|
||||||
|
|
||||||
return timezone or default or dt.timedelta(), date_str
|
if timezone is None and default is not NO_DEFAULT:
|
||||||
|
timezone = default or dt.timedelta()
|
||||||
|
|
||||||
|
return timezone, date_str
|
||||||
|
|
||||||
|
|
||||||
def parse_iso8601(date_str, delimiter='T', timezone=None):
|
def parse_iso8601(date_str, delimiter='T', timezone=None):
|
||||||
|
@ -1175,7 +1178,7 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):
|
||||||
|
|
||||||
timezone, date_str = extract_timezone(date_str, timezone)
|
timezone, date_str = extract_timezone(date_str, timezone)
|
||||||
|
|
||||||
with contextlib.suppress(ValueError):
|
with contextlib.suppress(ValueError, TypeError):
|
||||||
date_format = f'%Y-%m-%d{delimiter}%H:%M:%S'
|
date_format = f'%Y-%m-%d{delimiter}%H:%M:%S'
|
||||||
dt_ = dt.datetime.strptime(date_str, date_format) - timezone
|
dt_ = dt.datetime.strptime(date_str, date_format) - timezone
|
||||||
return calendar.timegm(dt_.timetuple())
|
return calendar.timegm(dt_.timetuple())
|
||||||
|
|
Loading…
Reference in a new issue