mirror of https://github.com/yt-dlp/yt-dlp.git
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 @@ from yt_dlp.utils import (
|
|||
ExtractorError,
|
||||
InAdvancePagedList,
|
||||
LazyList,
|
||||
NO_DEFAULT,
|
||||
OnDemandPagedList,
|
||||
Popen,
|
||||
age_restricted,
|
||||
|
@ -771,6 +772,7 @@ class TestUtil(unittest.TestCase):
|
|||
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', 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
|
||||
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)
|
||||
|
|
|
@ -4557,7 +4557,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||
# Python 3.8 should be deprecated soon
|
||||
# This fallback may make the timestamp slightly inaccurate for 3.8 users.
|
||||
if sys.version_info < (3, 9):
|
||||
return dt.timedelta(hours=-7)
|
||||
return NO_DEFAULT
|
||||
from zoneinfo import ZoneInfo
|
||||
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')),
|
||||
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):
|
||||
|
@ -1175,7 +1178,7 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):
|
|||
|
||||
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'
|
||||
dt_ = dt.datetime.strptime(date_str, date_format) - timezone
|
||||
return calendar.timegm(dt_.timetuple())
|
||||
|
|
Loading…
Reference in New Issue