diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index d066efdc7..f10167826 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -2338,7 +2338,7 @@ class YoutubeDL: return for f in formats: - if f.get('has_drm'): + if f.get('has_drm') or f.get('__needs_testing'): yield from self._check_formats([f]) else: yield f diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index ded0f9150..ddbd614d6 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -4560,6 +4560,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor): self._parse_time_text(self._get_text(vpir, 'dateText'))) or upload_date info['upload_date'] = upload_date + if upload_date and live_status not in ('is_live', 'post_live', 'is_upcoming'): + # Newly uploaded videos' HLS formats are potentially problematic and need to be checked + upload_datetime = datetime_from_str(upload_date).replace(tzinfo=datetime.timezone.utc) + if upload_datetime >= datetime_from_str('today-1day'): + for fmt in info['formats']: + if fmt.get('protocol') == 'm3u8_native': + fmt['__needs_testing'] = True + for s_k, d_k in [('artist', 'creator'), ('track', 'alt_title')]: v = info.get(s_k) if v: